Java自带的方法_JAVA中默认方法

JDK 8中,对接口的设计做了一项非常重要的变更:支持“默认方法”(Default Method),即可以在接口上声明和实现方法,这一点有点类似于抽象类、抽象方法,可以简化类的多个接口扩展的复杂度,潜在淡化JAVA有关多继承的缺陷,此外默认方法在lamda表达式使用方面非常便利。

此后,我们可能需要改变有些认知,比如“接口中不能有方法实现”等。

1、默认方法:在接口中可以声明修饰域为public default的方法实现体。

public interface Animal {

public default void run() {

System.out.println("Animal default run");

}

}

public interface Bird {

public void fly();

public default void run() {

System.out.println("Bird default run");

}

public static void tweet(String voice) {

System.out.println("Bird tweets:" + voice);

}

}

public abstract class Poultry implements Bird,Animal {

//抽闲类,可以直接改变默认方法的实现,覆盖所有接口的同名默认方法

public abstract void run();

public void bird() {

Bird.super.run();//也可以调用接口的默认实现

Animal.super.run();

//可以通过接口直接使用其static方法

Bird.tweet("I am poultry!");

}

}

如例所示,接口中,可以声明“default”默认方法实现,这与抽象类中的方法很像,默认方法可以被接口的实现者直接调用,也可以被继承它的子接口或者实现类重写,甚至实现接口的抽象类可以将default方法变更为抽象方法以便强制子类必须实现。

接口的实现类中,无论是否重写默认方法,都可以通过类似于“Bird.super.run()”的方式访问父接口的默认方法实现。同时,如果一个类,实现了多个接口,且这些接口中有重名的默认方法,仍然可以通过上述方式访问相应接口的默认方法。

由此可见,如果你在设计时发现,接口的子类具有某种共同的行为,你可以将其设计为“默认方法”,此后你则不需要设计抽象类来完成此要求,特别是此接口被多种不同的类实现时,可以避免在多个抽象类重复实现。

2、静态方法

在此前,static方法需要声明在类或者抽象类中,接口是不支持的,尽管接口中可以声明public static类型的属性。在接口中支持静态方法,跟“默认方法”一样,我们则不需要在像以前那样使用单独的类或者抽象类来完成此功能,在一定程度上简化了程序设计。

无论是默认方法,还是静态方法,其默认修饰域为public。

我们可以在lamba语法支持下,基于默认方法、方法引用等特性,更便捷的编写程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值