一:什麼是多態?
多種形態,既不同的物件對於同一個操作所做的對應不同。
二:.抽象類別的幾個注意事項
## 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();
以上是.NET中抽象類別實作多態的詳細內容。更多資訊請關注PHP中文網其他相關文章!