抽象类(abstract)
抽象类具有一下特性:
1、抽象类不能实例化。
2、抽象类可以包含抽象方法和抽象访问器。
3、不能用seled修饰符修改抽象类,这意味着抽象类不能被继承
4、从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。
抽象方法具有以下特性:
1、抽象方法是隐式的需方法(在定义抽象方法,编译器会自动在前面加上virtual)
2、只允许在抽象类中使用抽象方法声明
3、因为抽象方法声明不提供实际的实现,所以没有方法体,方法声明只是以一个分号结束,并且在签名后没有打括号({})
抽象类的实例:
1abstract class ShapeClass
2 {
3 abstract public int Area();
4 }
5 class Square : ShapeClass
6 {
7 int x, y;
8 public override int Area()
9 {
10 return x * y; //抽象方法必须实现,抽象类不能实例化
11 }
12 }
2 {
3 abstract public int Area();
4 }
5 class Square : ShapeClass
6 {
7 int x, y;
8 public override int Area()
9 {
10 return x * y; //抽象方法必须实现,抽象类不能实例化
11 }
12 }
抽象类不能被实例化Demo:
1abstract class ABC
2 {
3 public abstract void AFunc();
4 public void BFunc()
5 {
6 Console.WriteLine("这是一个非抽象方法!");
7 }
8 }
9 class DRV : ABC
10 {
11 public override void AFunc()
12 {
13 Console.WriteLine("这是一个抽象方法");
14 }
15 static void Main(string[] args)
16 {
17 DRV objB = new DRV();
18 objB.AFunc();
19 objB.BFunc();
20 }
21 }
2 {
3 public abstract void AFunc();
4 public void BFunc()
5 {
6 Console.WriteLine("这是一个非抽象方法!");
7 }
8 }
9 class DRV : ABC
10 {
11 public override void AFunc()
12 {
13 Console.WriteLine("这是一个抽象方法");
14 }
15 static void Main(string[] args)
16 {
17 DRV objB = new DRV();
18 objB.AFunc();
19 objB.BFunc();
20 }
21 }