接口
为什么会出现接口,接口存在的意义。
举个例子,手机有照相的功能,照相机有照相的功能,智能手表也有照相的功能。手机,照相机,智能手表都有照相的功能,但是我们难以向上抽取一个公共的父类。这时我们将照相的功能作为接口,手机,照相机,智能手表去实现这个接口。
接口中的成员:抽象方法和常量
package cn.hpu.tel;
//接口访问修饰符,public
public interface INet {
//接口中的抽象方法可以不写abstract关键字,默认的访问修饰符为public
public void netWork();
// void connection();
//抽象中可以包含常量,默认为public static final
int TEMP=20;
//jdk1.8以后接口中新增了默认方法和静态方法。默认方法和静态方法都可以带方法体
//默认方法可以在实现类中重写。默认方法通过接口引用调用。
default void connection() {
System.out.println("我是接口中的默认链接");
}
//静态方法不可以在实现类中重写,静态方法通过接口名调用。
public static void stop() {
System.out.println("链接中断");
}
}
1.接口的访问修饰符为public,因为实现类要去实现接口中的抽象方法,所以访问权限要是public。public可以省略
2.接口中的抽象方法可以不写abstract关键字,默认的访问修饰符为public。
3.某个类实现接口必须要实现借口中的所有的抽象方法,否则该类也要写为抽象类
4.接口中可以包含常量,默认为public static final。而且接口中的常量必须要初始化
接口中的成员:默认方法和静态方法
1.jdk1.8之后接口中新增了默认方法和静态方法,默认方法和静态方法可以reen法体。
2.默认方法可以在实现类中重写。默认方法通过接口引用调用。
3.静态方法不可以在实现类中重写。静态方法通过接口名调用。
4.实现类在重写接口中的默认方法时调用接口的默认方法的语句为
接口名.super.默认方法名
package cn.hpu.tel;
public class SmartWatch implements INet{
public static final int TEMP=30;
public void call() {
System.out.println("智能手表可以打电话");
}
public void netWork() {
System.out.println("智能手表可以上网");
}
public void message() {
System.out.println("智能手表可以发短信");
}
public void connection() {
INet.super.connection();
}
}