A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阿卜 中级黑马   /  2016-8-21 18:26  /  574 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JDK8的新特性
* 接口中可以定义有方法体的方法,如果是非静态,必须用default修饰       
* 如果是静态的就不用了

以下是测试代码,测试结论已标注于注释

public class JDK8Test1 {

        public static void main(String[] args) {
                Demo d = new Demo();        //Demo extends FatherT implements InterT
                d.print1();                                //输出"father print1".结论:同时继承类和实现接口,父类和父接口(default方法)有同名方法时,继承父类的方法
                d.print2();                                //输出"father print2".结论:同时继承类和实现接口,父类(非抽象)和父接口(无方法体)有同名方法时,不用再重写此方法,默认使用父类方法
                InterT.print();                        //输出"InterT static".结论:可以直接接口名.方法名调用接口中的static方法
                new InterT() {                        //匿名内部内需要重写借口中的无方法体方法
                        public void print2() {
                                System.out.println("new InterT print2()");
                        }
                }.print1();                                //输出"InterT default".结论:匿名内部类可以直接调用default修饰的有方法体方法
                Demo2 d2 = new Demo2();        //Demo2 implements InterT
                d2.print1();                        //输出"InterT default".结论:继承父接口中的default方法
        }

}

interface InterT {
        int i = 10;                        //接口中的属性默认静态常量
        public static void print() {        //接口中可以定义static的有方法体的方法
                System.out.println("InterT static");
        }
       
        public default void print1() {        //接口中可以定义非静态的,用default修饰的有方法体的方法
                System.out.println("InterT defaut");
        }
       
        public void print2();
}

class FatherT {
        public void print1() {
                System.out.println("father print1");
        }
        public void print2() {
                System.out.println("father print2");
        }
}

class Demo extends FatherT implements InterT {
        //并没有重写InterT中的print2()方法
}

class Demo2 implements InterT {
        //必须重写InterT中无方法体的print2()方法
        public void print2() {
                System.out.println(i);
        }
}

1 个回复

倒序浏览
大牛啊,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马