接口简单介绍
接口是一种规范
接口类似于抽象类
接口内部只有抽象方法
且可以多插入(继承)
插入关键字implements(实现)
接口定义关键字是interface(接口)
默认方法要有default修饰,第一个就是默认方法
和static
接口的定义和插入接口的类
public interface User{
public void work();
}
public class A implements User{
public void work(){
}
}
接口快速入门
通过接口调用接口的方法,但是要传入的参数是插入接口的子类
子类重写接口的方法以后,可以插入接口
当调用接口的方法,其实是调用传入类的对应方法
接口的应用场景
方便之处
1.方法名字统一
2.通过接口调用方法,直接放对象就可以调用到其对应的方法(快速入门也有案例)
接口使用细节
1.接口不能被实例化
2.接口的所有方法都是public(也是默认的不写也是public的),其中的默认都是抽象方法(默认的)不用加abstract了
3.一个普通的类插入接口必须实现(重写)其所有的方法
4.抽象类实现接口,就可以不实现接口的方法
5.一个类可以实现多个接口(当然每个接口的方法都要重写)
6.接口中的属性只能是final的,而且是public static final 修饰符(默认的),比如说接口中的int a
实际上是public static final int a=1;(必须初始化)
7.接口属性的访问形式,接口名.属性名
8.一个接口不能继承其他的类,但是可以继承(extends)多个别的接口
举例
interface A extends B,C{
}
9.接口的修饰符只能是public和默认(和类的修饰符一致)
10.实现类似于继承,子类实现父类可以通过(子类.接口的属性)调用接口的属性
接口VS继承
实现机制是对于单继承机制的补充
只能单继承限制了程序
所以出现了接口
接口的多态特性
1.接口多态参数
接口的引用可以指向实现接口的类对象
快速入门其实以及涉及到了接口的多态参数
形参是接口,但是传入的可以是实现接口的类
传入的是phone和camera是实现接口的类
2.多态数组
package com.hansp.Intrerface.dT;
public interface Usb {
void work();
}
class Phone implements Usb{
public void call(){
System.out.println("打电话");
}
@Override
public void work() {
System.out.println("手机工作");
}
}
class camera implements Usb{
@Override
public void work() {
System.out.println("相机工作中");
}
}
class A{
public static void main(String[] args) {
Usb []usb=new Usb[2];
usb[0]=new Phone();
usb[1]=new camera();
for (int i = 0; i < 2; i++) {
if(usb[i] instanceof Phone){
((Phone) usb[i]).call();
usb[i].work();
}
else{
usb[i].work();
}
}
}
}
3.接口的多态传递
一个接口(A)继承另一个接口(B)
则实现A的类
不仅可以用接口A引用指向也可以用B的引用指向
比如
接口IH是从IG传递过来的,所以叫接口的多态传递,类似于,Teacher不仅实现IG也实现IH