Java default关键字

default

在读java iterator源代码的时候,看到default关键字来修饰remove()方法和forEachRemaining()方法,神奇的是这两个方法在这个接口类中居然有了函数体。故而测试了一下default的用法。

Interface

首先定义了一个Interface类:


public interface Default {
    default public void method() {
        System.out.println("method in interface");
    }
    default public void method1() {
        System.out.println("method1 in interface");
    }
}

DefaultImpl


public class DefaultImpl implements Default{

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Default d = new main();
        d.method();
        d.method1();
    }
    @Override
    public void method() {
        // TODO Auto-generated method stub
        System.out.println("method in main");
    }
    @Override
    public void method1() {
        // TODO Auto-generated method stub
        System.out.println("method1 in main");
    }
}

结果

打印出的结果是
method in main
method1 in main
当我把子类中的重写方法删除之后,打印出的结果是
method in interface
method1 in interface

分析

我们都知道,interface类中的方法是没有具体实现的,并且在子类中必须全部继承,而使用了default方法之后,可以直接在Interface中定义方法的具体实现。

补充

@Override:
这个注释,可写可不写,它表示子类继承父类时的方法重写。
编译器会验证@Override下面的方法是否是父类所有,没有就报错。
因此如果我没有添加该注释,若不小心将方法名或者参数写错了,就相当于自己在子类中新添加了一个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值