抽象类:当多个子类都要继承父类中同一个方法或者多个方法并且所实现的内容逻辑都不同时,也就是需要在子类中重写时,那这时父类中的方法就可以不写方法体,将代码简单化,但是此方法必须使用abstract修饰,那么此类型也必须使用abstract修饰,即抽象类。
抽象类中变量可以初始化或不初始化但不能初始化后在抽象类中重新赋值或操作该变量(只能在子类中改变该变量)。
1、抽象方法与抽象类
(1)用abstract修饰的方法,不需要写方法体,但是得用分号来结尾。如:public abstract void show();
(2)有抽象方法的类,必须使用abstract声明(修饰)
2、抽象类不能实例化
(1)抽象类不能创建对象,没有意义。
(2)抽象类可以提供构造器,可以给子类使用。但没有办法创建对象。
(3)抽象类中可以没有抽象方法。
(4)1、abstract和final不能同时修饰一个类。因为final修饰的类不能被继承。
2、 abstract和private不能同时修饰一个方法,因为父类中的抽象方法,
需要在子类中全部覆盖,private修饰了方法,使子类无法访问父类中的抽象方法。
3、static不可以,静态成员直接是类名调用,而抽象类中方法没有方法体运行没有任何意义。
3、继承抽象类
(1)若一个类继承了抽象类,那么这个类必须实现(重写)抽象类中所有的抽象方法。
(2)若一个类没有实现抽象类的所有抽象方法,那么这个类必须使用abstract修饰。
4、抽象类的意义
(1)给不同子类定义一个父类
(2)抽象类可以封装子类的共同特征与共同行为。
(3)虽然子类方法可能有不同的实现逻辑,但是方法的定义一致。