jdk8前后的接口比较
在jdk8之前的interface之中可以定义变量和方法,变量必须用public、static、final进行修饰。而方法必须为public、abstract的,而且这些修饰符都是默认的。
抽象方法必须由实现类来进行实现。
jdk8前
- 接口定义方法:public、抽象方法、需要子类来实现
- 接口定义变量:public、static、final
在jdk8开始,支持使用 static
和 default
来对方法进行修饰。可以拥有方法体,不需要子类重写,子类会自动基础接口中默认的方法体。
代码演示
创建UserDao接口
package cn.unuuc.java;
public interface UserDao {
void insert();
default void delete(){
System.out.println("delete.......");
}
static void getUser(){
System.out.println("getUser.......");
}
}
创建UserDaoImpl类并实现UserDao接口
package cn.unuuc.java;
public class UserDaoImpl implements UserDao{
@Override
public void insert() {
System.out.println("UserDaoImpl insert.......");
}
}
测试
@Test
public void test01(){
UserDaoImpl userDaoImpl = new UserDaoImpl();
// 调用重写的方法
userDaoImpl.insert();
// 调用接口中默认的方法
userDaoImpl.delete();
// 调用接口中静态方法
UserDao.getUser();
}
- 调用接口中静态方法,还是一样需要使用
接口名.方法名
进行调用