目录
1.抽象类
概念:抽象关键字abstract修饰的类。
特点:不能被实例化的类,可以包含抽象方法,继承抽象类必须重写抽象方法。
抽象类中,封装的所有知识点都可以在里面书写。可以在抽象类中写抽象函数。
abstract class Thing
{
public string name;
//所有封装知识点都可以书写
//可以在抽象类中写抽象函数
}
class Water:Thing
{
}
抽象类不能够实例化,但是可以遵循里氏替换原则,用父类装子类,例如:
Thing t=new Water();
2.抽象方法
抽象方法就是abstract修饰的方法,与虚函数相同,必须被访问,不能是private,抽象方法没有方法体,无大括号{}!只能在抽象类中声明,否则报错!
抽象方法又叫纯虚方法,用abstract修饰,继承后必须实现,用override重写。
举例
abstract class Fruits
{
public string name;
//抽象方法是一定不能有方法体的
public abstract void Bad();
}
class Apple:Fruits
{
public override void Bad()
{
throw new NotImplementedException();
}
}
与虚方法不同,必须实现否则报错而虚方法可以选择写逻辑,抽象方法不行。抽象方法必须实现,虚方法可以在任何类中声明,而抽象方法不行。
子类的子类就不必要选择抽象方法了,当然也可以选择抽象实现,抽象方法可以无限被子类重写。
注意
如何选择普通类和抽象类?
不希望被实例化的对象相对比较抽象的类就选择使用抽象类。父类中的行为不太需要被实现的,只希望子类去定义规则可以选择抽象类,然后使用其中的抽象方法来定义规则。
作用:在整体框架设计时会使用。