接口
接口
此系列笔记来源于
BiliBili韩顺平老师的Java基础课
介绍
接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。
语法:
interface 接口名 {
//属性
//方法
}
class 类名 implements 接口 {
属性;
方法;
必须实现的接口的抽象方法
}
1、jdk7.0之前 接口所有方法都为抽象方法(无方法体)
2、jdk8.0后 接口可以有静态方法,默认方法,即可以有方法的具体实现
PS:默认方法需要加上default修饰,不加默认为abstract类
使用细节
1、 接口不能被实例化
2、接口中的所有方法都是public方法,接口中的抽象方法可以不用 abstract 修饰
3、一个普通类实现接口,就必须将该接口的所有方法都实现
4、抽象类实现接口,可以不用实现接口的方法‘
5、一个类同时可以实现多个接口
class xx implements IA, IB, IC {
……
}
6、接口中的属性只能是 final,并且是public static final修饰符。
如:int a = 1; 等价于 public static final int a = 1;
7、接口中属性的访问形式:接口名.属性名
8、接口不能继承类,但可以继承多个别的接口
interface A extends B, C {
...
}
9、接口的修饰符只能是 public 和 默认(与类一样)
实现接口 vs 继承类
1、继承的价值在于:解决代码的复用性和可维护性
2、接口的价值在于:设计好各种方法,让其他类去实现
3、接口更灵活:继承是满足 is - a 的关系,而接口只需满足 like - a 的关系
4、接口在一定程度上实现了代码解耦【即:接口规范性 + 动态绑定】
接口的多态特性
1、多态参数
如:定义接口IA,IA a 可以接受多个不同对象(接口引用可以指向实现了接口的类的对象)
2、多态数组
3、接口的多态传递
aa类实现了AA接口,但如果AA接口继承了BB接口,那么AA和BB类型的变量都可以指向aa类的对象实例
interface BB { }
interface AA extends BB { }
class aa implements AA {}
//main方法中
AA a1 = new aa();
BB a2 = new aa();

浙公网安备 33010602011771号