在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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 * */
|
请发表评论