接口(看了这个之后,面试官问你肯定加分哈哈哈)
下面一些东西可能会让你不敢相信,这次分为jdk8和jdk9来测试的,大家也可以用不同的jdk尝试一下。先说一下基本的定义,在说一下特别的东西
- 接口是一种引用数据类型。编译之后也是一个class字节码文件
- 接口是完全抽象的。(抽象类是半抽象的)或者说接口是个特殊的抽象类
- 接口支持多继承,一个接口可以继承多个接口
public interface a extends b,c{
}
interface b{
}
interface c{
}
- 接口中包含两个部分:一部分时常量,一部分是抽象方法
- 接口中的元素都是public修饰的
- 接口中的public abstract可以省略
- 接口中的常量的public static final可以省略
- 一个非抽象的类实现接口的时候,必须将接口中的抽象方法都实现了
- 接口中的方法在jdk8和jdk8以后都是可以有方法体的,这一点很多同学就可能会有疑问了,为什么有方法体,肯定是扯的,来给大家证明一下,大家也可以用两个jdk去证明一下。
-
jdk8对接口的测试(大家也可以去自己的idea测试一下方法体的问题)
public interface a {
static void test1(){
System.out.println("接口中的静态方法");
}
default void test2(){
System.out.println("接口中用default修饰的方法");
}
}
jdk8以后对接口的测试(加了一个可以用private修饰的方法),大家可以用不同的jdk版本来验证一下,加深印象
public interface a {
static void test1(){
System.out.println("接口中的静态方法");
}
default void test2(){
System.out.println("接口中用default修饰的方法");
}
private void test3(){
System.out.println("接口中用private修饰的方法");
}
private static void test4(){
System.out.println("接口中用private static 修饰的方法");
}
}
上面的两个点,面试官如果问到,你能回答出来觉得加分
抽象类和接口的区别
- 抽象类中有构造方法 接口中没有构造方法
-
抽象类是半抽象的 接口是完全抽象的
-
接口和接口之间支持多继承 类和类之间只能单继承
-
一个类可以同时实现多个接口 一个抽象类只能继承一个类(单继承)
有疑惑的同学一定要去自己手动的试验一下,加深印象,面试官比如说接口中的方法不能有方法体啊什么的,一定坚定告诉他是可以的!!!