Java接口详解
1.什么是接口?
类封装了成员变量,成员方法和构造方法
接口是一种引用数据类型,接口内部主要封装了方法,构造方法(jdk7及以前),默认方法和静态方法(jdk8),私有方法(jdk9)
接口的定义与类的定义很相识,不过接口是使用interface来定义,他也会被编译成.class文件,但是一定要明确他和类是不同的,接口是另一种引用数据类型(引用数据类型:数组,类,接口。)
这就是一个接口
public interface Example {
//抽象方法
//静态方法(jdk8)
//默认方法(jdk8)
//私有方法(jdk9)
}
2.接口的使用
接口不可以被实例化,他需要使用另一个类来继承实现接口,该类必须实现接口中的全部方法,否则该类只能是一个抽象类或者一个接口,类实现接口使用implements关键字,类似于类继承中的extends
public interface Example {
}
class ExampleImp implements Example{
}
3.接口中方法的定义
3.1抽象方法
使用abstr修饰没有方法体,权限修饰符public和abstr关键字可以省略
以下两种命名格式都可以
public interface Example {
public abstract void one();
}
public interface Example {
void one();
}
3.2默认方法
使用default修饰,供子类调用与重写,注意这里的default一定要写
public interface Example {
default void one(){
}
}
3.3 静态方法
通过接口直接调用,不能通过继承其的类或则类的对象进行调用
public interface Example {
public static void one(){
}
}
3.4私有方法
为什么使用私有方法?
增加代码的可复用性
供接口中的私有方法或则静态方法调用,继承其的类不可以调用
私有静态方法,比如一个静态方法或者吗,默认方法中有许多相同的代码,这个时候就可以把这些相同的代码抽取出来,封装到私有方法中
public interface Example {
private static void one(){
}
}
私有方法
public interface Example {
private void one(){
}
}
4接口的多继承
我们知道一个类只能继承一个父类,但是接口是可以被多继承的,即一个类可以实现多个接口,这叫做接口的多实现,而且一个类可以在继承一个类的同时实现多个接口
class 类名 extends 父类名] implements 接口名1,接口名2...{
// 重写接口中抽象方法【必须】 // 重写接口中默认方法【不重名时可选】
}
1.当一个类继承自多个接口时,而这些接口的抽象方法有重名时,只需要重写一次
2.当一个类继承自多个接口时,而这些接口的默认方法有重名时,必须要重写一次
注意
子接口重写默认方法时,default关键字可以保留。 子类重写默认方法时,default关键字不可以保留。
静态方法不需要重写,这是为什么呢
因为静态方法都是通过接口名直接调用的
当一个类继承一个父类又继承自接口的优先级情况
当父类的成员方法与接口中的默认方法重名时,子类选择就近先执行父类的成员方法
interface Example {
public default void shuchu(){
System.out.println("这是接口");
}
}
public class one {
public void shuchu(){
System.out.println("这是一个类");
}
}
class three extends one implements Example{
}
public class Main {
public static void main(String[] args) {
three three = new three();
three.shuchu();
}
}
结果
注意事项
接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰。
public static final int a=10;
接口中,没有构造方法,不能创建对象。
接口中,没有静态代码块。
以上就是接口的一些基础知识,如有错误还请各位批评指正