接口
用interface定义接口
由常量定义和方法定义两部分组成
格式:
[修饰符] interface A [extends B]{
[public] [static][final] 常量;
[public] [abstract] 方法;
}
在类中实现接口,用关键字implements
格式:
在类中实现接口,方法名、返回值类型、参数的个数和类型必须与接口中完全一致[修饰符] class <类名> [extends 父类名] [implements 接口列表]{}
实现接口中所有方法
实现多个接口,中间用逗号分隔
- 接口里可以没有方法,如果有方法,方法必须是抽象的,公开的。
- 接口里不能有私有的方法。
- 接口里的变量都是public final的。
- 接口可以继承接口,可以多继承。
抽象类
包含抽象方法的一个类
没有足够信息描绘对象
用abstract修饰
不能实例化
抽象类内部的方法可以不是抽象方法
只有声明和定义,没有方法主体
普通类中不能定义抽象方法
static不能修饰抽象方法
例子:
abstract class Demo{
abstract void method();
}
区别:
- 接口不能有私有方法或变量,抽象类可以有
- 实现接口必须实现接口里的所有方法,抽象类可以有选择的重写用到的方法
- 抽象类只能有一个直接父类,但一个类可以实现多个接口,弥补java单继承性的不足