.NET中抽象類別實現多態

來源:互聯網
上載者:User

一:什麼是多態?

多種形態,既不同的對象對於同一個操作做出的相應不同。

二:.抽象類別的幾個注意事項

1,抽象類別使用abstract修飾

2,抽象方法只能位於抽象類別中

3,抽象類別不能執行個體化

4,抽象方法沒有方法體

5,抽象類別不能是靜態類或者密封類

6,子類必須重寫父類的所有抽象方法,除非子類也是抽象類別

7,抽象類別中可以有普通的方法

8,抽象了中可以有建構函式

9,抽象類別中的抽象方法就是為了約束子類的方法形式。

三:抽象類別的“執行個體化”

雖然抽象類別本身不能通過new進行執行個體化,但他可以將引用對象指向子類的真實對象,也可以稱為間接執行個體化。

Person作為父類

public abstract class Person{    public int Age { get; set; }public string Name { get; set; }public Person(int age,string name) {this.Age = age;this.Name = name;}public abstract void Say();public void Eat(){Console.WriteLine("我是父類");}   }

Student類去繼承Person

public class Student:Person{      public Student(string name,int age){                     public Student(int age, string name):base(age,name) {                 this.Age = age;                 this.Name = name;                 }                  public override void Say()               {               Console.WriteLine("子類說話");                 }public void Eat() {Console.WriteLine("我是子類");}     }}

父類對象指向子類的真實對象時,子類首先走的是父類的建構函式,在走子類的建構函式,給其屬性賦值。,

Person p = new Student(18, "張宇"); p.Say();                  //只有這一種情況,父類變數指向子類對象,調用的是子類的方法,                                      //符合多態,父類和子類方法同名調用的是子類的方法p.Eat();                  //如果沒有方法沒有發生關係,則預設調用父類的方法。                  Student stu = (Student)p; stu.Eat();                //如果要調用子類的特有的方法,需要進行類型轉換,在java中稱為,向下轉型             Console.ReadKey();
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.