抽象类:
有抽象方法的类,把相同的但是不确定的信息提取出来(父类做解耦:公共的信息提取出来),为了以后的重用,且必须使用abstract关键字所修饰。
定义抽象类的目的就是为了子类实现抽象类。
抽象方法:没有方法体的方法( 没有大括号 {} ),且必须被abstract关键字所修饰。
抽象类的特点:
- 由abstract修饰的类叫做抽象类,abstract也可以修饰方法,修饰的方法叫做抽象方法
- abstract修饰的抽象方法可以不在抽象类实现,但一定要在子类中重写
- 只有抽象类当中才能有抽象方法,普通类中不能有抽象方法
- 抽象类当中不一定全是抽象方法,也可以有普通方法,普通方法子类可以不用重写
- 抽象类不能实例化,但是可以使用多态
- final不能与abstract同时使用,final修饰的方法禁止重写,abstract修饰的方法要求重写,产生冲突
- private不能与abstract同时使用,private修饰的方法子类不可见,abstract修饰的方法要求重写,产生冲突
- static不能与abstract同时使用,static是针对类层次的,抽象方法是针对对象层次的,不在一个层次
- 抽象类可以有构造方法,目的是子类在初始化之前先初始化父类,再new子类
(子类new对象时要先初始化父类的 需要构造方法) - 子类继承抽象类后,如果不想重写抽象类中的抽象方法,那么该类必须是抽象类