抽象方法

  • 使用关键字abstract去修饰一个方法,把它变成抽象方法
  • 抽象方法没有方法体,只是一个声明放在那边。
  • 抽象方法必须存在与抽象类当中,只要一个类里定义了抽象方法,那么这个类必须得变成抽象类
  • 子类必须实现继承自父类的所有抽象方法,如果子类不想实现,那么它得继续将自己变成抽象类,让抽象方法继续往下传,等待其他的子类去实现。

例如:

//宠物去医院看病 
public abstract void toHospital();

抽象类

  • 使用关键字abstract修饰的类成为抽象类
  • 抽象类不能够实例化对象,但是可以定义一个引用,该引用可以指向任何实现了它的抽象方法的子类的实例
  • 抽象类里可以没有抽象方法,但是定义了抽象方法的类必须得是抽象类
  • 抽象类里的抽象方法只有声明,没有方法体,而普通方法是有方法体的
  • 抽象类里不能有抽象的构造方法和抽象的静态方法
  • 抽象类里可以有普通的构造方法,子类可以使用super关键字去调用

接口的概念与应用

  • 用关键字interface去定义一个接口
  • 接口中的方法默认是抽象方法, 默认使用public abstract修饰的
  • 接口中的变量默认是静态的常量,默认使用public static final修饰的,必须在定义它的同时赋值,一旦赋值,就不能够修改
  • 接口不能实例化对象
  • 实现类必须要实现接口中的所有抽象方法,如果不想实现,该类继续使用abstract关键字把自己变成抽象类
  • java中的继承只支持单根继承,但是可以实现多个接口,使用关键字implements去实现多个接口,接口名之间用逗号隔开
  • 接口不能实例化,但是可以定义引用,并且该引用可以指向任何它的实现类的实例对象
  • 接口之间可以使用extends关键字实现继承

接口的总结

  1. 属性全都是全局静态常量
  2. 方法都是全局抽象方法
  3. 无构造方法
  4. 一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法抽象类利于代码复用,接口利于代码维护