首頁 > 後端開發 > C#.Net教程 > .NET中抽象類別實作多態

.NET中抽象類別實作多態

迷茫
發布: 2017-03-26 16:22:31
原創
1951 人瀏覽過

一:什麼是多態?

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

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

##     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();                //如果要调用子类的特有的方法,需要进行类型转换,在java中称为,向下转型

              

Console.ReadKey();

登入後複製

以上是.NET中抽象類別實作多態的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板