JAVA 8新特性 允许接口定义非抽象方法 快速入门案例

JavaSE8.0出来也蛮久了


网上也蛮多案例和教程 但大多数都写的比较复杂  而且更新的新特性也不是很齐全。


本案例是根据甲骨文官方的Demo进行修改的


授人以鱼不如授人以渔,学习方式其实也是蛮重要的。


先说说如何找到官方介绍JAVASE8.0的新特性 和入门Demo



一、下载新特性的Demo


1、打开 http://www.oracle.com/technetwork/java/javase/downloads


2、然后点击Download 进入JAVASE 8的下载界面


3、下载相应平台的Java SE Development Kit 8u112 Demos and Samples Downloads



二、学习新特性 从官方资料入手+谷歌浏览器自动翻译


  官方传送门:  http://docs.oracle.com/javase/8/




下面重点介绍JAVASE 8.0的新特性   接口允许定义非抽象方法


import java.lang.reflect.Method;


/**
 * JavaSE 8新特性:1.接口可以定义非抽象方法  但必须使用default或者staic关键字来修饰 
 */
public class DefaultMethod {


public interface Chinese {

//小结:2.JDK1.8规定只能在接口定义defult方法  且必须加Body实现
default String speak() {
return "会说普通话!";
}
//小结:3.接口的默认实现方法支持重载
default String speak(String language) {
return "会说"+language;
}

//小结:4.接口可以定义static方法
static void hehe() {
System.out.println("我不告诉你");
}

}

//小结:4.接口的default方法可以被子接口重写成default方法
public interface GuangDong extends Chinese{
@Override
public default String speak() {
return "粤语";
}
}
//小结:5.接口的默认方法还可以被子接口重写成抽象方法!!
public interface Mayun extends Chinese{
@Override
public String speak();
}


public static void main(String[] args) throws Exception{
        //小结:6.如果实现类没有重写接口的默认方法,则该类直接调用接口的默认实现方法
System.out.println(new Chinese(){}.speak());
System.out.println(new Chinese(){}.speak("粤语"));
//小结:7.接口的default方法可以被子类重写成普通方法
System.out.println(new Chinese(){public String speak() {return "会说鸟语";}}.speak());

//小结:JDK1.8甚至允许直接调用接口的静态方法
Chinese.hehe();

//小结:JDK1.8 可以通过反射来 判断接口的某个方法是否为default方法
        Method m =Chinese.class.getMethod("speak");
        System.out.println("It is "+m.isDefault()+" that "+m.getName()+" is default method");


}
}



大概介绍到这里 更详细的Demo可以参考官方提供的案例

http://download.oracle.com/otn-pub/java/jdk/8u112-b15-demos/jdk-8u112-windows-x64-demos.zip



展开阅读全文

没有更多推荐了,返回首页