关键字:abstract,可以修饰方法和类,称为抽象方法和抽象类。
抽象方法
- 权限控制符 abstract 返回值类型 方法名(参数列表);
- 抽象方法没有方法体,修饰符不能为private,因为抽象方法需要被子类继承并重写
抽象类
- 包含抽象方法的类必须定义为抽象类
- 权限控制符 abstract class 类名{}
注意:
- 抽象类不能被实例化
- 抽象类中可以全部是抽象方法,也可以全是非抽象方法,也可以两者都有
- 抽象方法不能被static修饰
- 子类如果继承抽象类,必须实现抽象类中所有的抽象方法,如果没有实现所有的抽象方法,子类就必须定义成抽象类
接口 关键字:interface
接口是为了解决java中的单一继承的局限所提供的解决方案,子类可以继承一个父类,并同时实现多个接口,从而间接实现了多继承。
接口的特征:
- 接口定义使用interface关键字,不是class,因此不是类,不能实例化
- 接口中只包含常量和抽象方法,不能包含变量和非抽象方法
- 接口中的方法默认为抽象方法,可以不加abstract关键字
- 接口中不能有抽象方法
- 接口中不能有构造方法
- 接口的常量是static final
- jdk8.0以后可以在接口中使用中关键字default定义默认方法,有方法体,在接口的各实现类中会默认拥有该方法及方法体
接口定义的语法:
权限修饰符 interface 接口名{}
接口的实现:
权限修饰符 实现类名 implement 接口名1,接口名2{
//重写所有接口的所有方法
}
实现类即继承父类,有又实现接口
权限修饰符 实现类名 extends 父类名 implement 接口1,接口2{
//重写所有接口中的所有方法
}
extends和implement的顺序不能改变