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




  • 相关阅读:
    zlib编译不过(Error A2070)解决方法(转)
    error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CStaticLink::* )(CPoint)' to 'LRESULT (__thiscall CWnd::* )(CPoint) (转)
    MFC does not support WINVER less than 0x0501 解决方案(转)
    【程序打包工具 Inno Setup】转
    【Visual Studio】简单内存泄漏检测方法 解决 Detected memory leaks! 问题(转)
    各种版本QT下载地址与VS2013+QT5.3.1环境搭建过程(转)
    【Windows Message】MFC 通过F5,刷新桌面
    [bzoj]3343 教主的魔法
    NOIP2012 国王游戏
    NOIP模拟赛 路面修整
  • 原文地址:https://www.cnblogs.com/ryelqy/p/10104152.html
Copyright © 2011-2022 走看看