抽象类的案例
时间:2011-03-21 来源:hfliyi
抽象类:在类的定义中将关键字abstract放于class之前而创建的类,特点:
(1):抽象类不能被实例化;(2):抽象类可以包含抽象方法,也可以不包含抽象方法。
抽象方法只能包含方法的定义,但是不能包括实现,方法定义的后面是分号,而不是常规的方法快。
派生类必须实现所有的抽象方法。
抽象方法只能存在于抽象类中或者接口中。
override关键字的作用:(!):用来重写虚拟方法;(2):用来实现抽象方法。
虚拟成员或抽象成员不能是私有的。
例如:
定义一个抽象类ShapeObj,其中包含一个抽象方法area();Circle,Square,Rectangle派生于ShapeObj;
代码如下:
View Code1 namespace Test
2 {
3 /// <summary>
4 /// 抽象类
5 /// </summary>
6 abstract class ShapeObj
7 {
8 /// <summary>
9 /// 抽象类的抽象方法 抽象方法不能是私有的;抽象方法只能存在于抽象类中或者接口中;抽象方法不能带方法的实现,只能带方法的声明
10 /// </summary>
11 public abstract void area();
12 }
13 /// <summary>
14 /// Circle继承之ShapeObj抽象类
15 /// </summary>
16 class Circle : ShapeObj
17 {
18 /// <summary>
19 /// Circle实现了抽象类的方法area
20 /// </summary>
21 public override void area()
22 {
23 Console.WriteLine("Circle的area方法");
24
25 }
26 }
27 /// <summary>
28 /// Square继承之ShapeObj抽象类
29 /// </summary>
30 class Square : ShapeObj
31 {
32 /// <summary>
33 /// Square实现了抽象类的方法area
34 /// </summary>
35 public override void area()
36 {
37 Console.WriteLine("Square的area方法");
38
39 }
40
41 }
42 /// <summary>
43 /// Rectangle继承之ShapeObj抽象类
44 /// </summary>
45 class Rectangle : ShapeObj
46 {
47 /// <summary>
48 /// Rectangle实现了抽象类的方法area
49 /// </summary>
50 public override void area()
51 {
52 Console.WriteLine("Rectangle的area方法");
53
54 }
55 }
56 class Program
57 {
58 static void Main(string[] args)
59 {
60 ShapeObj[] shape = new ShapeObj[3];
61 shape[0] = new Circle();
62 shape[1] = new Square();
63 shape[2] = new Rectangle();
64 shape[0].area();
65 shape[1].area();
66 shape[2].area();
67 }
68 }
69 }
相关阅读 更多 +