接口
接口的定义与特点
接口用关键字interface来定义
/*
声明了一个接口:体现一种规范,规范一定是公开的
*/
public interface InterfaceDemo{
//常量
//抽象方法
//目标 :了解接口中的成分贴点,JDK 1.8之前接口中只能有抽象方法和常量
//1.常量
//public static final String SCHOOL_NAME = "SMY";
String SCHOOL_NAME = "SMY";
//2.抽象方法
//注意:由于接口体现规范思想,规范默认都是公开的,所以代码层面 public abstract final可以省略不写
//public abstract void run();
void run();
}
什么是接口
接口也是一种规范
接口的基本使用:被实现
接口是用来被类实现(implements)的,实现接口的类称为实现类。实现类可以理解成所谓的子类
public class MyClass implements interface01,interface02,interface03,…{
}
实现的关键字:implements
从上面可以看出
接口可以被类单实现 , 也可以被类多实现
接口实现的注意事项:
一个类实现接口,必须重写全部接口的全部抽象方法,否则这个类需要定义成抽象类
基本小节
类和类的关系:单继承
类和接口的关系:多实现
接口和接口的关系:多继承,一个接口可以同时继承多个作用
接口与接口的关系:多继承
接口多继承的作用
规范合并,整合多个接口为同一个接口,便于子类实现
JDK8开始接口新增方法
原因:项目v1.0上线没问题
项目v2.0要加新的方法,此时改了接口就要所有的实现类实现这些方法
允许接口中直接定义带有方法体的方法
第一种:默认方法
类似之前写的普通实例方法:必须用default修饰
默认会public修饰,需要用接口的实现类的对象来调用//因为接口不可创建对象
default void run(){
System.out.println("--开始跑--")
}
第二种:静态方法
默认会public修饰,必须static修饰
注意:接口的静态方法必须用本身的接口名来调用
static void inAddr(){
System.out.println("我在学接口中的静态方法")
}
第三种:私有方法
就是私有的实例方法:必须使用private修饰
从JDK1.9才开始有的
只能在本类中被其他的默认方法或者私有方法访问
private void go(){
System.out.println("--准备--")
}
自己在开发中很少使用,通常是java源码涉及到
使用接口的注意事项
接口绝对不能创建对象//接口是更加彻底的抽象
一个类实现多个接口,多个接口中有同样的静态方法不冲突//根本不可能用类去调用接口中的静态方法
一个类继承了父类,同时又实现了接口,父类中的接口中有同名方法的,默认用父类的//就近原则,父类离他更近,接口也不能继承父类
一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可//类会冲突,接口为了维护自己多继承的机制,让子类可以重写,这种情况下不能使用任何已经实现的接口中的默认方法,只能自己重写
一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承
一句话总结:
定义接口,描述功能,如果有人要用,实现接口
标签:实现,默认,继承,接口,方法,public From: https://www.cnblogs.com/hang-/p/17681953.html