一:什麼是多態?
多種形態,既不同的物件對於同一個操作所做的對應不同。
二:.抽象類別的幾個注意事項
## 1,抽象類別使用abstract修飾
2,抽象方法只能位於抽象類別中
# 3,抽象類別無法實例化
4,抽象方法沒有方法體
5,抽象類別不能是靜態類別或密封類別
6,則子類別必須重所有寫父類別的抽象方法,除非子類別也是抽象類別
7,抽象類別中可以有普通的方法
8,抽象了中可以有建構子
9,抽象類別中的抽象方法就是為了約束子類別的方法形式。
三:抽象類別的「實例化」
雖然抽象類別本身無法透過new進行實例化,但他可以將引用對象指向子類別的真實對象,也可以稱為間接實例化。
Person當父類別
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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( "我是子类" );
}
}}
|
登入後複製
父類別物件指向子類別的真實物件時,子類別首先走的是父類別的建構函數,在走子類別的建構函數,給其屬性賦值。 ,
1 2 3 4 5 6 7 8 9 10 11 | Person p = new Student(18, "张宇" );
p.Say();
p.Eat();
Student stu = (Student)p;
stu.Eat();
Console.ReadKey();
|
登入後複製
以上是.NET中抽象類別實作多態的詳細內容。更多資訊請關注PHP中文網其他相關文章!