首頁  >  文章  >  後端開發  >  .NET中抽象類別實作多態

.NET中抽象類別實作多態

迷茫
迷茫原創
2017-03-26 16:22:311824瀏覽

一:什麼是多態?

      多種形態,既不同的物件對於同一個操作所做的對應不同。

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

##     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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn