接口

接口

此系列笔记来源于

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();
posted @ 2022-03-21 14:21  Yra  阅读(96)  评论(0)    收藏  举报