zoukankan      html  css  js  c++  java
  • 紧随时代的步伐--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




  • 相关阅读:
    IIS7中的几种身份鉴别方式(一)Basic身份验证
    IIS7中的几种身份鉴别方式(二)集成身份验证
    java集合
    SharePoint 2010中welcome page的设置细节
    SharePoint中使用Linq出现未将对象引用到实例化的解决方法
    SharePoint 2010中关于An error was encountered while retrieving the user profile的处理方式记录
    The Need for an Architectural Body of Knowledge
    The Softer Side of the Architect
    Event Receivers 学习小结
    使用SmtpClient发送带图片的邮件的代码实现
  • 原文地址:https://www.cnblogs.com/ryelqy/p/10104152.html
Copyright © 2011-2022 走看看