有时候将一个类设计的非常抽象,以至于他没有具体的实例,这样的类叫做抽象类。
abstract关键字的使用
1、abstract可以用来修饰结构、类、方法
2、一旦父类抽象了,就不可以再实例化造对象
ps:父类还是应该提供构造器,便于子类实例化时调用super()
3、开发中,都会提供抽象类的子类,让子类实例化,完成相关操作
4、abstract修饰方法,没有方法体
这个例子不是没有方法体,不是抽象方法
public void eat(){
}
抽象方法的定义:只有方法的声明,没有方法体
public abstract void eat();
如果一个类中存在抽象方法,那么这个类中一定不能造对象,所以这个类一定是个抽象类
------->包含抽象方法的类一定是个抽象类
反之,抽象类里面的方法不一定是抽象方法
若子类重写了父类中所有抽象方法后,此子类方可实例化
若子类没有重写了父类中所有抽象方法,此子类也必须声明为抽象类
抽象类一定有子类!(不然他又没法造对象,就失去了这个类的意义)
抽象类的子类,如果这个父类抽象类中有抽象方法,那么一定要重写该抽象方法或者子类也定义为抽象类
abstract 不可以修饰私有方法、静态方法(静态方法在子类中不算重写,这样会导致没有办法重写这样的静态方法如果又声明为抽象的,则需要在子类中重写,矛盾)、final的方法、final的类