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




  • 相关阅读:
    mysql获取给定时间段内的所有日期列表
    mysql中的年,月,日统计以及日历表的实现
    MySQL5.7安装配置
    获取ip地址
    Intellij热部署插件JRebel
    IntelliJ IDEA2018版热部署jrebel插件安装使用教程
    idea插件篇之java内存分析工具(JProfiler)
    mysql中的整除,取余
    SIMD.mul (SIMD) – JavaScript 中文开发手册
    Java面试题 : 如何确保N个线程访问N个资源的同时又不导致死锁
  • 原文地址:https://www.cnblogs.com/ryelqy/p/10104152.html
Copyright © 2011-2022 走看看