接口(interface)
实际上可以看做是一种规范,接口的具体使用,体现多态性,Java开发中,接口通过让类去实现(implements)的方式来使用,Java类可以实现多个接口(弥补了Java单继承性的局限性) 其次,接口与接口之间可以继承,而且可以多继承。
注意:
- 如果实现类覆盖了接口中的所抽象方法,则此实现类就可以实例化。
- 如果实现类没覆盖接口中所的抽象方法,则此实现类仍为一个抽象类。
- 接口中不能定义构造器的!意味着接口不可以实例化。
- 接口中的所有成员变量都默认是由public static final修饰的。(不可变)
- 接口中的所有抽象方法都默认是由public abstract修饰的。
理解:
从上图中我们可以看到麻雀,飞机,气球,子弹有飞的功能,但是各自飞的方式各自不同。因此,我们可以用接口定义一个标准,兼容多种飞行。当我们想调用飞的功能时就可以非常方便的通过接口找到相应实现类,执行其相应方法。
接口和抽象类的区别
上述图片来源于网络!
代码:
分析其中的错误:
interface Playable {
void play();
}
interface Bounceable {
void play();
}
interface Rollable extends Playable,
Bounceable {
Ball ball = new Ball("PingPang");
}
class Ball implements Rollable {
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public void play() {
ball = new Ball("Football");
System.out.println(ball.getName());
}
}
上述代码的错误:
- play方法的重写不明确。
- ball对象名被final static 修饰不可更改。