抽象类:
定义:
不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例。
特征:
1、用abstract修饰类。
2、不能被实例化。
3、类中方法可以是抽象的(必须带上abstract修饰类),也可以是非抽象的。
4、抽象类中的抽象方法必须在子类中实现(方法必须用override修饰)。
5、不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承
6、抽象类可以包含抽象方法和抽象访问器。
7、从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现
8、抽象类是不完整的,它只能用作基类
9、抽象类主要用来进行类型隐藏和充当全局变量的角色
例题:
abstract class SwimAble
{
public abstract void swim();
}
class Fish:SwimAble
{
public override void swim()
{
Console.WriteLine("游泳");
}
}
运行意义:
在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是 抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的; 同时,通过从这个抽象体派生,也可扩展此模块的行为功能。为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在
继承复习(特性):
1、子类拥有父类的所有属性和方法(除构造方法)。
2、子类只能访问父类用Public和Protected修饰的属性和方法。
3、单继承(子类只能继承一个基类)。
4、用sealed修饰的类不能被继承。
5、子类调用父类的带参构造方法时用base,子类构造方法可以不带参
E.g 父类 public Animal(int age){}
子类 public Cat():base(10){}
6、子类重写父类方法时,父类同名方法用vivtual修饰,子类同名方法用override修饰。
7、子类方法访问父类同名方法时用base。
8、创建子类对象时,先调用父类的构造方法,然后在调用子类的构造方法。
多态:
定义:
不同的对象,调用相同的方法,产生不同的结果
E.g: Animal(类名1) a1(对象名1)=new Cat(类名2(继承Animal的类));
Animal(类名1) a1(对象名2)=new Cat(类名3(继承Animal的类));
Animal(类名1) a1(对象名3)=new Cat(类名3(继承Animal的类));更多精彩:http://www.gopedu.com/