C#中类与对象的关系,以及方法申明的static修饰符

C#中,类(class)的书写,是class 类名称:例如class Program这就是一个Program类,类理解起来就是同一类事物,具有同样的特性,就如同我们常说的人类,鸟类,这样具有相同特性和行为的一类事物的统称,在编程中这种特性我们可以把它用一些方法功能来表示,例如程序:

 class Calculate

    {
        public static int ADD(int a, int b)
        {
            return a + b;
        }
        public static int MUL(int a, int b)
        {
            return a * b;
        }
        public static int DIV(int a, int b)
        {
            return a / b;
        }
        public static int MIN(int a, int b)
        {
            return a - b;
        }

    }

这就是定义了一个包含加减乘除功能的Calculate类,这就是具有运算功能的类,而对象是这个类的具体化,比如说一个图书馆是一个类的话,那么其中的某一本书就是其中的具体的对象,在C#中对象的定义格式是:

 Calculate Cal = new Calculate();
 Console.WriteLine(Cal.ADD(1, 2));

用new来定义就可以定义一个具体的类的对象,当定义好一个对象之后我们需要对其方法或者变量进行调用。其中以static来说明,这里以static方法为例,在类中,方法的类型有两种一种静态一种非静态。:static的中文意思是静态的,规定的是静态变量静态方法,它所规定的是这个类的属性,而不是这个类的对象的,而非静态的方法则是属于对象的,这里以具体程序来说明:

namespace Lei
{
    class Program
    {
        static void Main(string[] args)
        {
            var a=Calculate.DIV(4, 2);
            var b=Calculate.MIN(5, 3);
            Calculate CAL = new Calculate();
            var c=CAL.ADD(1, 2);
            var d=CAL.MUL(2, 4);
            Console.WriteLine("{0},{1},{2},{3}",a,b,c,d);
        }
    }
    class Calculate
    {
        public int ADD(int a, int b)
        {
            return a + b;
        }
        public  int MUL(int a, int b)
        {
            return a * b;
        }
        public static int DIV(int a, int b)
        {
            return a / b;
        }
        public static int MIN(int a, int b)
        {
            return a - b;
        }

    }
}

这里可以发现在Calculate类下有两个静态方法:public static int DIV(int a, int b) 以及public static int MIN(int a, int b) 以及非静态方法:public int ADD(int a, int b)以及public int MUL(int a, int b),我们可以这样理解有static修饰的静态方法属于的是这个类的属性,而非静态的则是具体的对象的属性,就比如以鸟类为例,鸟类中所具有统一属性是有翅膀,可以飞,在程序中我们以static静态方法来表示,而当我们当研究某一对象时,比如蝙蝠,我们可能会研究它本身的超声波定位的属性,这个就是非静态的方法。所以我们调用时,如果只是想调用这个类的基本属性,也就是静态static属性,则直接用Calculate.DIV就可以调用,此时是不能写成Calculate.ADD或者.MUL,

在这里插入图片描述
此时这两个方法由于是非静态的也就是可以理解为对象所特有的属性,所以类是不能调用他们的,想要调用他们只能用new来进行实例化对象化。当我们实例化之后我们研究的对象就是固定的了,就比如研究蝙蝠这个对象时,我们考虑的就是他独特于类的具体事物,同样实例化之后,该对象能调用的方法只能是非静态的,自己所特有的属性,不然的化也就没必要实例化,若仍然想调用一般的静态方法,可以直接以类的形式调用。实例之后的物体对于静态的方法则不能调用。
综上可以这么理解,可以把类中的静态的变量和方法当成一个群体的属性来看,而非静态的则看成是对象的属性,当我们研究一个对象时,就要通过new的实例化来进行调用,当我们想研究这个类的一般属性时就可以直接调用。

namespace Lei
{
    class Program
    {
        static void Main(string[] args)
        {
            var a=Calculate.DIV(4, 2);
            var b=Calculate.MIN(5, 3);
            Calculate CAL = new Calculate();
            var c=CAL.ADD(1, 2);
            var d=CAL.MUL(2, 4);
           var e= Calculate.MIN(10, 1);
            Console.WriteLine("{0},{1},{2},{3},{4}",a,b,c,d,e);
        }
    }
    class Calculate
    {
        public int ADD(int a, int b)
        {
            return a + b;
        }
        public  int MUL(int a, int b)
        {
            return a * b;
        }
        public static int DIV(int a, int b)
        {
            return a / b;
        }
        public static int MIN(int a, int b)
        {
            return a - b;
        }

    }


}

猜你喜欢

转载自blog.csdn.net/DOUBLE121PIG/article/details/84558197