1. 程式人生 > >C#高階程式設計第四章學習筆記-繼承

C#高階程式設計第四章學習筆記-繼承

1.實現繼承:表示一個型別派生於另一個基型別,他擁有基型別的所有成員變數和方法,因此在需要給現有的型別增肌新的功能後者寫一些共享性的程式碼時很有用。

介面繼承:只繼承了函式的簽名沒有整合其他的方法的實現

2.C#不支援多重繼承,但是允許派生自多個介面

3,把一個基類函式宣告為virtual,可以在任何派生類中重寫這個方法

4,隱藏方法,基類和繼承類中有同名的方法,實現不同的功能,在呼叫時會出現問題,採用new這個關鍵字來隱藏掉基類中的方法

public class A
    {
        public void Print()
        {
            Console.WriteLine("A");
        }
    }

    public class B : A
    {
        public new void Print()
        {
            Console.WriteLine("B");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            B b=new B();
            b.Print();
            Console.ReadKey();
        }
    }

5,C#有一種特殊的語法呼叫基類中的方法


6.抽象類和抽象函式

抽象類不能例項化,抽象函式不能直接實現,注意修飾符不能為private,private是沒有意義的

    public abstract class A
    {
        public abstract void Print();
        protected abstract void Print1();

    }

    public class B : A
    {
        public override void Print()
        {
            throw new NotImplementedException();
        }
        protected override void Print1()
        {
            throw new NotImplementedException();
        }
    }

7,密封類和密封方法

C#允許把類宣告為sealed對於類表示類不能被繼承,對於方法表示不能被重寫,繼承B的類不能重寫Print方法

 public abstract class A
    {
        public abstract void Print();

    }  
    public class B : A
    {
        public sealed override void Print()
        {
            throw new NotImplementedException();
        }
    }
  public abstract class A
    {
        public abstract void Print();

    }
    public class C : A
    {
        public override void Print()
        {
            throw new NotImplementedException();
        }
    }
    public class B : A
    {
        public sealed override void Print()
        {
            throw new NotImplementedException();
        }
    }

    public class D : C
    {
        public override void Print()
        {
            //base.Print();
        }
    }
    public class E : B
    {
      
    }

8.派生類的建構函式


9.修飾符