目录
1.在jdk1.8之前 接口对比
1.1 jdk1.8之前 接口interface
1.可以声明常量
2.可以声明抽象方法
1.2 jdk1.8后 接口interface
1.可以声明常量
2.可以声明抽象方法
3.可以声明默认方法
4.可以声明static 静态方法
2.为什么要有default默认方法
package com.wying.demo.Interface;
/**
* description:
* date: 2021/11/18
* author: gaom
* version: 1.0
*/
public interface InterfaceDemo01 {
int a=1;//常量 默认是public static修饰的 因为接口就是被实现的 声明为其他类型没意义
void test01() ;//抽象方法 默认是public 因为接口设计就是被实现的 其他权限没意义,编译报错
void test02() ;//抽象方法 默认是public 因为接口设计就是被实现的 其他权限没意义,编译报错
}
package com.wying.demo.Interface;
/**
* description:
* date: 2021/11/18
* author: gaom
* version: 1.0
*/
public class Test01 {
public static void main(String[] args) {
}
class AClass implements InterfaceDemo01{
@Override
public void test01() {
System.out.println("AClass 重写了InterfaceDemo01 的test01方法");
}
@Override
public void test02() {
System.out.println("AClass 重写了InterfaceDemo01 的test02方法");
}
}
class BClass implements InterfaceDemo01{
@Override
public void test01() {
System.out.println("BClass 重写了InterfaceDemo01 的test01方法");
}
@Override
public void test02() {
System.out.println("BClass 重写了InterfaceDemo01 的test02方法");
}
}
}
上面的代码InterfaceDemo01接口中有N个抽象方法,那么他的实现类就需要实现N个方法,
如果一个接口被很多类实现了,当这个接口在升级时增加了一个抽象方法,那所有的实现类都要实现.....这就很麻烦了,搞的我都不敢随便实现别人的接口了。
jdk1.8考虑到这个问题 于是默认方法就来了