紧随时代的步伐--Java8特性之接口默认方法
1、关于Java8
自从1996年Sun公司发布Java以来,Java到目前为止已经走过21个年头,每一次的升级,都是Java语言的革新,对时代发展的适应。2014年Oracle发布Java8,而据可靠消息指出,在今年2017年9月,Oracle将会发布Java9。Java9即将到来,然而我们对Java8很多新特性还是没有熟悉和灵活运用。
2、接口定义
Java8后,可以使用default关键字,在接口上可添加默认方法。无论是技术上还是编程理念上都是一种进步。
public interface Dao {
default public void add() {
System.out.println("add");
}
default public void select() {
System.out.println("select");
}
default public void modify() {
System.out.println("modify");
}
default public void delete() {
System.out.println("delete");
}
}
3、实现类
1)
public class DaoImpl implements Dao{
@Override
public void add() {
System.out.println("Impl:");
Dao.super.add();
}
@Override
public void select() {
System.out.println("Impl");
Dao.super.select();
}
@Override
public void modify() {
System.out.println("Impl");
Dao.super.modify();
}
@Override
public void delete() {
System.out.println("Impl");
Dao.super.delete();
}
}
2)
public class DaoImpl2 implements Dao{
@Override
public void add() {
System.out.println("Impl2:");
Dao.super.add();
}
@Override
public void select() {
System.out.println("Impl2:");
Dao.super.select();
}
@Override
public void modify() {
System.out.println("Impl2:");
Dao.super.modify();
}
@Override
public void delete() {
System.out.println("Impl2:");
Dao.super.delete();
}
}
4、测试类
来用Junit4来运行测试
public class Test {
private Dao dao;//接口
@Test
public void test() {
System.out.println("=====默认接口=====");
dao = new Dao() {};
dao.add();
System.out.println("=====默认接口重写=====");
dao = new Dao() {
@Override
public void add() {
// TODO Auto-generated method stub
System.out.println("代码重写:");
Dao.super.add();
}
};
dao.add();
System.out.println("=====实现类1====");
dao = new DaoImpl();
dao.add();
System.out.println("=====实现类2====");
dao = new DaoImpl2();
dao.add();
}
}
5、运行结果
=====默认接口=====
add
=====默认接口重写=====
代码重写:
add
=====实现类1====
Impl:
add
=====实现类2====
Impl2:
add
Reference:
[1] Herbert Schildt(著), 战晓苏、江凌(译), Java8编程参考官方教程(第9版), 清华大学出版社, 213-217