1.類同時只能繼承一個基類。

2.virtual 關鍵字用於修飾方法、屬性、索引器或事件聲明,並使它們可以在派生類中被重寫。 例如,此方法可被任何繼承它的類重寫。

   默認情況下,方法是非虛擬的。 不能重寫非虛方法。

  virtual 修飾符不能與 staticabstract, private 或 override 修飾符一起使用。

   virtual的用法

        public class test
        {
            protected string a;
            protected string b="abc";
            public virtual string A
            {
                get { return a; }
                set { a = value; }
            }
            public string B
            {
                get { return b; }
                set { b = value; }
            }
            public virtual string returnStr(string Str)
            {
                return Str;
            }
        }

        public class testchild:test
        {
            public override string A
            {
                get { return a; }
                set { a = value; }
            }
            public override string returnStr(string Str)
            {
                return Str;
            }
            public int returnInt(int Str)
            {
                return Str;
            }
        }

        virtual修飾的方法叫虛方法,沒有被virtual修飾的方法叫是方法

        虛方法可以在它的派生類中用overrid重寫,虛方法的重寫不是必須的;重寫會改變父類方法的功能
        虛方法和實方法都可以在派生類中用new修飾的同名方法覆蓋,覆蓋不會改變父類方法的功能

               public class testchild:test
        {
            public new string A
            {
                get { return a; }
                set { a = value; }
            }
            public new   string returnStr(string Str)
            {
                return Str;
            }
            public int returnInt(int Str)
            {
                return Str;
            }
        }

3.abstract抽象類

        abstract class ShapesClass
        {
            public string getdata();//錯誤!抽象類中聲明的函數都要用abstract來修飾

            abstract public int Area();

        }
        class Square : ShapesClass
        {

            int side = 0;

            public Square(int n)
            {
                side = n;
            }

            // Area method is required to avoid

            // a compile-time error.

            public override int Area()
            {
                return side * side;
            }

            static void Main()
            {

                Square sq = new Square(12);

                Console.WriteLine("Area of the square = {0}", sq.Area());

            }


            interface I
            {

                void M();

            }

            abstract class C : I
            {

                public abstract void M();

            }

        }

       4.靜態類,類的靜態成員

          靜態方法可以被重載,但不能被重寫,因爲它屬於類,不屬於任何事例。

          不能在類的靜態成員中使用靜態局部變量。

          類中包含靜態字段則要在靜態構造函數中初始化。

      5.接口

         接口可以同時繼承多個接口,接口的方法聲明在類中的實現必須是public的

         類可以同時繼承多個接口,但類一次只能繼承一個基類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章