上文链接:Java基础之继承
在上篇文章中我们讲到Java语言的继承是单一继承,一个子类只能有一个父类。这种继承关系存在局限性,那么Java中是否存在机制,可以处理这种局限性呢?答案当然是肯定的,这种机制就是-------接口。
接口:
接口(interface
)是一个比较抽象类还抽象的类,接口中的所有方法都是抽象方法,接口和类之间的关系是实现(implements
)
格式:
interface 接口名{
}
接口的成员特点:
- 只能有抽象方法
- 只能且默认使用public&abstract修饰方法
- 默认使用public static final 来修饰成员变量
注意:
- 注意接口不能创建对象,即不能实例化
- 类与接口的关系是实现关系,一个类实现一个接口必须实现它所有的方法
接口和类之间的各种关系:
- 类与类:继承关系,单一继承,多层继承
- 类与接口:实现关系
- 接口与接口:继承关系(多继承)
interface interA{
public abstract void method();
}
interface interB{
public abstract void method();
}
interface interC extends interB{
public abstract void method();
}
class Test implements interA,interB{
@Override
public void method(){
}
}
接口的优点:
- 类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口,类与类之间是继承关系,Java中的继承是单一继承,一个类只能由一个父类,打破了继承的局限性
- 对外提供规则(USB接口)
- 降低了程序的耦合性(可以实现模块化开发,定义好规则,每个实现自己的模块,提高了开发效率)
接口和抽象类的区别:
共性:不断地抽取出抽象的概念
区别:
1、与类之间的关系
- 类与接口是实现关系,而且是多实现,一个类可以实现多个接口
- 类与抽象类是继承关系,Java中的继承是单一继承,一个类只能有一个父类,Java中的继承是多层继承
2、成员
- 成员变量:抽象类可以有成员变量,也可以有常量,而接口只能有常量。(常量即赋值的变量)
- 成员方法:抽象类可以有抽象方法,可以有非抽象方法;接口只能有抽象方法,而且方法有默认修饰符public abstract
- 构造方法:抽象类有构造方法,接口无