1. 程式人生 > >C#中類與物件的關係,以及方法申明的static修飾符

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;
        }

    }


}