1. 程式人生 > >繼承與重載

繼承與重載

因此 mes rac class console ide 代碼實現 中繼 rgs

繼承

繼承的特點:

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

繼承與重載