抽象类 abstract
在继承中,父类(抽象类)定义抽象方法签名(无方法体),且子类必须重写父类的抽象方法
即:父类(抽象类)定义了方法规范,子类必须执行父类(抽象类)定义的方法规范
在父类(抽象类)中,定义抽象方法签名 methodName()
abstract class ClassName {
public abstract void methodName();
}
在子类中,必须重写 methodName() 方法
class ChildrenClassName extends ClassName {
@Override
public void methodName() {
// 重写的方法体
}
}
特点:抽象类无法被实例化成对象,只能用于继承
接口 interface
- 类实现接口
接口定义的方法默认的都是 public abstract 公共抽象方法,且接口中不能定义属性字段
即:接口只是定义了方法规范,实现接口的类必须执行接口定义的方法规范
定义接口(方法前的 public abstract 修饰词默认省略)
interface InterfaceName {
void method1();
String method2();
}
定义实现接口的子类 (使用 implements 关键词来实现接口)
class ClassName implements InterfaceName {
@Override
public void method1() {
// 重写的方法体
}
@Override
public String method2() {
// 重写的方法体
}
}
一个类不可继承多个类,但是可以实现多个接口
class ClassName implements InterfaceName1 InterfaceName2 InterfaceName3{}
- default 关键词,解决接口新增方法必须重写所有实现它的子类的问题
因为接口的方法,默认的都是 public abstract 公共抽象类,所以所有实现此接口的子类必须重写此接口的所有方法,所以 按需重写很重要
在接口中使用 default 修饰的方法,可以不必重写
interface InterfaceName {
default void method1();
String method2();
}
- 接口的继承
和class继承类似,一个interface可以通过 extends 关键词继承另一个interface
interface InterfaceName1 {
void method1();
}
interface InterfaceName2 extends InterfaceName1 {
void method2();
}
特点:接口无法被实例化成对象