什么是抽象

  • ⽗类的某些⽅法不确定时,可以用abstract关键字来修饰该方法,即抽象⽅法,用abstract来修饰该类,即抽象类
  • 抽象类将事物的共性的东西提取出来,由子类继承去实现,代码易扩展、易维护
  • java中的抽象类和抽象⽅方法 ```java //抽象类 abstract class 类名{ } //抽象方法,不能有方法主体 abstract 返回类型 ⽅法名();
  1. ```java
  2. public abstract class Vehicle {
  3. public abstract void run();
  4. public void stop(){
  5. System.out.println("停在路上");
  6. }
  7. }
  8. class Bicycle extends Vehicle{
  9. @Override
  10. public void run() {
  11. System.out.println("⼈工驱动");
  12. }
  13. }
  14. class Automobile extends Vehicle{
  15. @Override
  16. public void run() {
  17. System.out.println("汽油驱动");
  18. }
  19. }

image.png
image.png
image.png
image.png

抽象特点

抽象类的特点

  • 抽象类不能被实例化,因为抽象类中⽅法未具体化,这是⼀种不完整的类,所以不能直接实例化,编译⽆无法通过
  • 抽象类中不一定包含抽象方法,但是有抽象⽅法的类必定是抽象类
  • ⼀个抽象类中可以没有抽象⽅法,这样做的⽬的是为了此类不能被实例例化。
  • 抽象类的⼦类必须给出抽象类中的抽象⽅方法的具体实现,否则子类也是抽象类,需要⽤abstract声明
  • 抽象类不能使用final关键字修饰,因为final修饰的类是⽆法被继承

    抽象⽅法的特点

  • 抽象类中的抽象⽅法只是声明,不包含⽅法体

  • 抽象⽅法不能用private修饰,因为抽象⽅法必须被⼦类实现(覆写),而private权限对于子类来说是不能访问的
  • ⼀个类继承了一个抽象类,那么它必须全部覆写抽象类中的抽象方法,当然也可以不全部覆写,如果不覆写全部抽象方法则这个子类也必须是抽象类
  • 构造方法,类方法(即static 修饰的方法)不能声明为抽象方法