标签:其他 自己 继承 bst com 实例 [] 种类 div
FROM P141
1.抽象成员
抽象成员是指设计为被覆写的函数成员。有以下特征:
□必须是一个函数成员。即字段和常量不能为抽象成员。
□必须用abstract修饰符标记。
□不能有实现代码块。抽象成员的代码用分号表示。
例如,下面取自一个类定义的代码声明了两个抽象成员:一个抽象方法、一个抽象属性
1 abstract public void PrintStuff(string s);//分号替换实现 2 abstract public int MyProperty 3 { 4 get;//分号替换实现 5 set;//分号替换实现 6 }
抽象成员只可以在抽象类中声明。一共4种类型的成员可以声明为抽象的:
方法、属性、事件、索引
其他事项如下:
□尽管抽象成员必须在派生类中用相应的成员覆写,但不能把virtual修饰符附加到abstract修饰符
□类似虚成员,派生类中抽象成员的实现必须指定override修饰符。
下图对虚成员和抽象成员进行了比较:
2.抽象类
抽象类就是指设计为被继承的类。抽象类只能用作其他类的基类。
□不能创建抽象类的实例
□抽象类使用abstract修饰符声明
1 abstract class MyClass //基类 2 { 3 …… 4 }
□抽象类可以包含抽象成员和普通的非抽象成员。抽象类的成员可以是抽象成员和普通带实现成员的任意组合。
□抽象类可以派生自另一个抽象类。
1 abstract class MyClass //基类 2 { 3 …… 4 } 5 abstract class AbClass : MyClass 6 { 7 …… 8 }
□任何派生自抽象类的类必须使用override关键字实现该类所有的抽象成员,除非派生类自己也是抽象类。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace review 8 { 9 abstract class AbClass //抽象类 10 { 11 public void IdentifyBase() //普通方法 12 { 13 Console.WriteLine("I am AbClass"); 14 } 15 abstract public void IdentifyDerived(); //抽象方法 16 abstract public int MyInt { get; set; } //抽象属性 17 } 18 class DerivedClass : AbClass 19 { 20 public override void IdentifyDerived() 21 { 22 Console.WriteLine("I am DerivedClass"); 23 } 24 private int _myInt; 25 public override int MyInt 26 { 27 get 28 { 29 return _myInt; 30 } 31 32 set 33 { 34 _myInt = value; 35 } 36 } 37 } 38 class Program 39 { 40 static void Main(string[] args) 41 { 42 //AbClass a = new AbClass(); //错误 抽象类不能实例化 43 //a.IdentifyDerived(); 44 DerivedClass b = new DerivedClass(); //实例化派生类 45 b.MyInt = 28; 46 b.IdentifyBase(); //调用继承的方法 47 b.IdentifyDerived(); //调用抽象方法 48 Console.WriteLine(b.MyInt); 49 Console.Read(); 50 } 51 } 52 } 53 /* 54 * 输出如下: 55 * I am AbClass 56 * I am DerivedClass 57 * 28 58 * */
标签:其他 自己 继承 bst com 实例 [] 种类 div
原文地址:https://www.cnblogs.com/quintessence/p/9110224.html