1.接口的概述
1.生活中接口,代表着一种规范,代表着一种标准,比如:usb接口,Typec接口,插排
2.java中的接口:代表着一种行为操作的标准,共同定义了一套相关的属性和方法的集合
2.定义格式
1.接口定义格式:定义的方式与类相似,但是使用interface关键字,不使用class
* public interface 接口名称{
* //接口的成员列表:
* // 公共的静态常量
* // 公共的抽象方法
* // 公共的默认方法(JDK1.8以上)
* // 公共的静态方法(JDK1.8以上)
* // 私有方法(JDK1.9以上)
* }
2.接口的成员列表
* 如果是jdk1.8之前 ,那么接口中包含的内容有: *
(1)公共的静态的常量:其中public static final可以省略
(2)公共的抽象的方法:其中public abstract可以省略
* 如果是jdk1.8以上,增加了
*
(3)公共的默认的方法:其中public 可以省略,建议保留,但是default不能省略
(4)公共的静态的方法:其中public 可以省略,建议保留,但是static不能省略
* 如果是jdk1.9以上,增加了
* ⑤私有方法
* 总结: 接口,在java中是一个类型,是抽象方法的集合,通常以interface来声明,所以,一个类可以通过接口的方式,来实现相关方法
* 类是描述对象的属性和方法.
* 接口包含了类要实现的方法.
3 接口的使用
* 1.定义
* public class 实现类名称 implements 接口名称{
* ......
* }
接口不能直接创建对象,但是可以通过接口名直接调用接口的静态方法和静态常量。
接口不能创建对象,但是可以被类实现(implements
,类似于被继承)。
类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用 implements
关键字。
【修饰符】 class 实现类 implements 接口{
// 重写接口中抽象方法【必须】,当然如果实现类是抽象类,那么可以不重写
// 重写接口中默认方法【可选】
}
【修饰符】 class 实现类 extends 父类 implements 接口{
// 重写接口中抽象方法【必须】,当然如果实现类是抽象类,那么可以不重写
// 重写接口中默认方法【可选】
}
注意:
-
如果接口的实现类是非抽象类,那么必须重写接口中所有抽象方法。
-
默认方法可以选择保留,也可以重写。
重写时,default单词就不要再写了,它只用于在接口中表示默认方法,到类中就没有默认方法的概念了
-
接口中的静态方法不能被继承也不能被重写
-
对于接口的静态方法,直接使用“接口名.”进行调用即可
-
也只能使用“接口名."进行调用,不能通过实现类的对象进行调用
-
-
对于接口的抽象方法、默认方法,只能通过实现类对象才可以调用
-
接口不能直接创建对象,只能创建实现类的对象
-
4、接口的多实现(implements)
之前学过,在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接口的多实现。并且,一个类能继承一个父类,同时实现多个接口。
【修饰符】 class 实现类 implements 接口1,接口2,接口3。。。{
// 重写接口中所有抽象方法【必须】,当然如果实现类是抽象类,那么可以不重写
// 重写接口中默认方法【可选】
}
【修饰符】 class 实现类 extends 父类 implements 接口1,接口2,接口3。。。{
// 重写接口中所有抽象方法【必须】,当然如果实现类是抽象类,那么可以不重写
// 重写接口中默认方法【可选】
}
接口中,有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一次。
5、接口的多继承 (extends)
一个接口能继承另一个或者多个接口,接口的继承也使用 extends
关键字,子接口继承父接口的方法。
所有父接口的抽象方法都有重写。
方法签名相同的抽象方法只需要实现一次。
public interface W19_USBc extends W02_USB,W16_Chargeable{
//反转的方法
public abstract void reverse();
}
6、接口与实现类对象构成多态引用
实现类实现 接口,类似于子类继承父类,因此,接口类型的变量与实现类的对象之间,也可以构成多态引用。通过接口类型的变量调用方法,最终执行的是你new的实现类对象实现的方法体。