C#繼承與重載


繼承

繼承的特點:

 a.派生類是對基類的擴展,派生類可以添加新的成員,但不能移除已經繼承的成員的定義。

b.繼承是可以傳遞的。如果C從B中派生,B又從A中派生,那么C不僅繼承了B中聲明的成員,同樣也繼承了A中聲明的成員。

c.構造函數和析構函數不能被繼承.

d.派生類如果定義了與繼承而來的成員同名的新成員,那么就可以覆蓋已繼承的成員,但這兵不是刪除了這些成員,只是不能再訪問這些成員。

e.類可以定義虛方法、虛屬性及虛索引指示器,它的派生類能夠重載這些成員,從而使類可以展示出多態性。

f.派生類只能從一個類中繼承,可以通過接口來實現多重繼承。

代碼實現:

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Father f = new Father();
            Childern c = new Childern();
            grandChildren g = new grandChildren();
            //f.Method();
            c.fatherMethod();
            c.Name = 1;
            g.Name = 2;
            Console.ReadKey();
        }

    }
    public class Father
    {

        public int Name { get; set; }
        public void fatherMethod()
        {
            Console.WriteLine("父類的方法");
        }
    }
    public class Childern : Father
    {
        public new void childerMethod()
        {
            Console.WriteLine("子類的方法");
        }
    }
    public class grandChildren : Childern
    {
        public void grandMethod()
        {
            Console.WriteLine("孫子類的方法");
        }
    }
}

 

抽象類繼承:

 class 繼承
    {
        static void Main(string[] args)
        {
            多態 d =new One();
            d.Output();
            Console.ReadKey();
        }

    }
 public abstract class 多態
    {
        public abstract void Output();
    }

    public class One : 多態
    {
        public override void Output()
        {
            Console.WriteLine("這是重寫后的");
        }
    }

 

多態(重寫,重載):

重寫:往往是對於子類與父類而言.子類重寫父類的方法

重寫的方法:

a.重寫父類的方法要用到override關鍵字(具有override關鍵字修飾的方法是對父類中同名方法的新實現)

b.要重寫父類的方法,前提是父類中該要被重寫的方法必須聲明為virtual或者是abstract類型

c.要被重寫的方法添加virtual關鍵字表示可以在子類中重寫它的實現。(注意:C#中的方法默認並不是virtual類型的,因此要添加virtual關鍵字才能夠被重寫)

d.virtual關鍵字用於將方法定義為支持多態,有virtual關鍵字修飾的方法稱為“虛擬方法”

代碼實現:

namespace ConsoleApp1
{
    class Program { static void Main(string[] args) { Father f = new Father(); Childer c = new Childer(); //f.Method();  c.fatherMethod(); Console.ReadKey(); } } public class Father { public virtual void fatherMethod() { Console.WriteLine("父類的方法"); } } public class Childer : Father { public override void fatherMethod() { Console.WriteLine("重寫后.子類的方法"); } } }

 

重載:在同一個類中,方法名相同,參數列表不同.

public class Reload
    {
        public void Get() { Console.WriteLine("無"); } public void Get(string name) { Console.WriteLine(name); } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM