紧随时代的步伐--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




 

posted @ 2017-07-31 22:49  ryelqy  阅读(131)  评论(0编辑  收藏  举报