接口的特征
-
接口的传递性
-
接口的继承性 (多继承)
使用接口的意义:
可以实现设计和实现的分离,抽象出 N 多不同类的共同
点。
举例:飞机,鸟,球,导弹,宇宙飞船……
继承:is –a 关系
三角形 is a 几何图形
鸟 is a 球? 不成立
接口 : has –a 关系
手机 has a 拍照的功能
飞机 has a 飞行的能力
鸟 has a 飞行的能力
接口体现的是一种能力
**总结:**使用接口实现多态的步骤
(1) 编写接口
(2) 实现类实现接口中的方法
(3) 接口(类型)new 实现类对象
面向接口的编程
代码:package cn.sxt.java03; public interface Fly {//使用接口的意义 abstract void flying(); } class Bird implements Fly{ @Override public void flying() { System.out.println("我是一只无人问津的小鸟"); } } class Ball implements Fly{ @Override public void flying() { System.out.println("一个被人踢来踢去的球"); } } class Airplane implements Fly{ @Override public void flying() { System.out.println("想要翱翔在九天之外"); } }
实现类
package cn.sxt.java03;
public class TestFly {
public static void main(String[] args) {
//创建对象实例
Fly bird=new Bird();//接口类型指向实现类对象。接口是引用数据类型
Fly air=new Airplane();
air.flying();
bird.flying();
}
}
//接口的传递性和多继承型
package cn.sxt.java03;
public interface Flying {
public abstract void fly();
}
package cn.sxt.java03;
public interface InterfaceA {
/**
* 接口的传递型和多继承型
*
*/
public abstract void play();
}
interface InterfaceB extends InterfaceA{
}
interface InterfaceC extends InterfaceB,InterfaceA{//接口的多继承,Java类只有单继承
}
class Test implements InterfaceC{
@Override
public void play() {//implements cn.sxt.java03.InterfaceA.play
//方法来自接口a中,体现了接口的转递性
}
}