1、java接口的关键字:implements,可实现多个接口,接口接口之间使用逗号分隔。
注:
继承只能继承一个,接口可以实现多个
2、在接口里所有的方法都是抽象方法,不用关键字abstract修饰。
3、接口不能定义变量,必须定义常量
4、抽象方法的访问权限必须使用public,即使省略public关键字,默认类型也是public
5、默认方法只能被实现类调用
代码实现
public default void descTypec() {
System.out.println("typec 自我介绍!");
}
6、把所有接口和父类的抽象方法引入可以点击出错的地方然后 点击有Add的那个选项。
7、如果想生成一个interface可以直接将class改为interface .
8、如果在父类抽象方法里实现了接口,则在子类里无需再实现。
9、接口定义语法为
访问权限控制符 interface 接口名 [extends 接口列表]
10、接口只能包含常量(public static final)、抽象方法和内部类。
11、通过extends关键字可以使自定义接口实现继承,但接口只能继承父接口。
12、接口回调:接口声明实现类实例化,此对象只能调用声明接口的方法。
代码实现:
NFC nfc = new IPhoneX();
13、接口类可以直接使用接口中的常量
注意:
接口实现类所实现的接口有常量名相同的常量,在实现类中不能直接使用,必须用类名来确定到底是哪一个接口的常量。
14、默认方法和静态方法:
用default修饰的方法,是默认方法。
用static修饰的是静态方法
其余的方法都是抽象方法
15、如果接口内只有一个抽象方法则称该接口为函数式接口。
注意:
记住比较的维度,具体区别靠理解。
16、instancesof运算符
功能:判断前面对象对应的类是否为后面的类或者其子类、接口实现类创建的对象。如果是返回true不是则返回false;
代码实现:
Student stu = new Student();
//返回true
System.out.println("is Student类:" + (stu instanceof Student));
17、instanceof 的作用
代码实现:
if(obj instanceof Student)
//判斷obj 是否为Student 类或者Student 的子类
Student stu = (Student) obj;
分析:如果不判断直接将obj转化为Student将会报错
java.lang.ClassCastException
练习内容
1、
- 调用接口中的默认方法
代码实现:
NFC.java
public default void sayHello() {
System.out.println("hello world");
}
Main.java
iphone.sayHello();
2、
- 接口回调 + Instanceof 的使用
代码实现:
NFC nfc = new Iphone();
if(nfc instanceof NFC) {
nfc = (NFC) nfc;
nfc.ePay();
}
3、
- 接口里常量的定义
代码实现:
public static final String NAME = "NFC";
注:
1、static 和 public的顺序无所谓
2、调用常量必须在实现该接口的类里