接口-----java
接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须你能....”的思想。
如果你是天使,则必须能飞。如果你是汽车,则必须能跑。接口的本质就是契约,就像我们人间
的法律一样,大家都要遵守。
接口定义说明:
1、访问控制符:只能是public或者默认。
2、接口名:和类名采用相同命名机制。
3、extends:接口可以多继承。
4、常量:接口中的属性只能是常量,总是:public static final 修饰,不写也是。
5、方法:接口中的方法只能是:public abstract。不写也是。
要点:
1、子类通过implements来实现接口中的规范。
2、接口不能创建实例,但是可用于声明引用变量类型。
3、一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的
4、JDK1.8(不含8)之前,接口中只能包含静态常量,抽象方法,不能有普遍性,构造方法,普通方法。
5、JDK1.8(含8)后,接口中包含普通的静态方法,默认方法
验证:
/**
* 使用接口,定义一个接口Flyable,让飞机、鸟、超人、导弹都实现该接口。接口表达的是has—a的关系
* 而继承表达的是is—a的关系,飞机、鸟、超人、导弹不是一种事物,所以使用接口来实现
*/
public interface Flyable {
//接口中只有常量,没有变量,常量都是全局静态常量
public static final int num = 5;
//接口的方法自动采用public abstract修饰,所有方法都是全局抽象方法
public abstract void fly();
}
public class Plane implements Flyable{
@Override
public void fly() {
System.out.println("飞机在飞......");
}
}
public class Animal {
}
public class Bird extends Animal implements Flyable{
@Override
public void fly() {
System.out.println("鸟在飞.....");
}
}
public class SuperMan implements Flyable{
@Override
public void fly() {
System.out.println("超人在飞......");
}
}
public class Test {
public static void main(String[] args) {
Flyable plane = new Plane();
showFly(plane);
Bird bird = new Bird();
showFly(bird);
SuperMan sm = new SuperMan();
showFly(sm);
Flyable bird2 = new Plane();
bird2.fly();
}
public static void showFly(Flyable fly){
fly.fly();
}
}
运行结果:
总结 一:接口的组成
1、接口和数组、类、抽象类是同一层次的概念。
2、成员变量:接口中所有的变量都使用public static final修饰,都是全局静态常量
3、成员方法:接口中所有的方法都使用public abstract 修饰,都是全局抽象方法。
4、构造方法:接口不能new,也没有构造方法
5、接口做方法的形参,实参可以是该接口的所有实现类。
总结 二:接口和多继承
C++ 多继承
优点:可以从多个父类继承更多的功能
缺点:不安全
Java 单继承
优点:安全
缺点:功能受限
解决方案:采用接口,既安全,功能又强大,接口变相的使java实现了c++的多继承,又没有c++多继承
的不安全性。
还没有评论,来说两句吧...