接口
interface关键字
interface使抽象的概念更向前迈进了一步。
前面所说的abstract关键字允许人们在类中创建一个或多个没有任何定义的方法(相当于提供了接口部分),但是没有提供任何相应的具体实现,这些实现是有该类的子类创建的。
interface关键字产生了一个完全抽象的类,它也不提供任何实现,允许创建者确定方法名、参数列表、返回类型,但是没有任何方法体。(相当于一种特殊的方法体,类中只有常量和方法的定义,而没有变量和方法的实现)接口只提供了形式,而微提供任何具体实现。
接口的定义:
定义:是抽象方法和常量值的定义的集合。 从本质上说相当于一种特殊的方法体,类中只有常量和方法的定义,而没有变量和方法的实现。
要想创建一个接口,需要用interface关键字代替class关键字
定义举例:
public interface Runner {
public static final int id = 1;
public void start();
public void run();
public void stop();
}
让一个类遵循某一个特定的接口 需要用到implements关键字
class Test implements Runner{
.........
}
接口的特点:
- 接口可以多重实现,即一个类可以实现多个接口,(一个类可以实现“多继承“”了)
- 当一个类有父类并且实现多个接口时。父类必须在前面、后面跟接口。
- 接口中声明的属性 默认为public static final 的,也只能是public static final 的。是为了修正C++多继承中会出现的问题,避免命名重复的冲突。
- 接口中的所有方法均为默认抽象方法。
- 接口中的方法默认为public的,也只能是public的。
- 接口可以继承其他的接口,并添加新的属性和抽象方法。
- 一个类可以实现多个接口
- 接口与实现类之间也存在多态性。
使用接口的原因:
1、增加代码的灵活性、为了能向上转型为多个基类。
2、防止客户端程序员创建该类的对象,并确保这仅仅是一个接口。
3、规定子类的行为
4、增强可扩展、可维护性
5、便于管理开发