1.接口
抽象类表示的是一种继承关系,一个类只能使用一次继承关系,这样限制了类的多重体现 。
接口的特点:
Java是单继承的语言,利用接口可以模拟多继承;
接口是对抽象类的进一步抽象,是方法声明和常量的定义集合;
接口是一种行为规范,是一种“契约”;
接口不可以被实例化
实现类必须实现接口的所有方法
实现类可以实现多个接口
接口中的变量都是静态常量
为什么接口可以多继承,而类不可以?
如果有两个父类,两个父类里有一个相同的方法,那么作为子类应该怎么继承这个方法?父类1的还是父类2的?但是实现多个接口则没问题,因为不管哪个接口,调用的都是同一个实现,因为只有方法名!而且单继承的目的之一,就是降低复杂度,减少维护难度。
- 接口的使用
接口的定义格式如下:
<访问符> interface 接口名 {
[访问符] <返回类型> 方法名([参数列表]);
......
}
定义一个接口MultiInterface.java,代码如下:
public interface MultiInterface {
public static final double PI = 3.1415926;
public void callArea();
default void before(){
//仅限于JDK1.8以后可使用
System.out.println("现在开始计算:");
}
}
注意:在定义接口的时候,接口中的所有方法和常量自动定义为public。 接口中定义的变量默认是public static final 型,且必须赋初值。
从JDK1.8开始可以使用default关键字来定义一个默认的方法来扩展接口,default关键字修饰的默认方法可以直接调用,不用子类去实现。
- 编码实操
先声明USB接口:其中规定了要实现USB接口就必须实现接口规定实现的read( )和write( )这两个方法。
interface USB {
void read();
void write();
}
然后在写一个U盘类UDisk和一个键盘类Keyboard,这两个类都去实现USB接口。(实现其中的方法)
class UDisk implements USB {
@Override
public void read() {
System.out.println("U盘正在通过USB功能读取数据");
}
@Override
public void write()