竹笋

注册

 

发新话题 回复该主题

JDK18在接口中写方法实现常用吗 [复制链接]

1#
白癜风怎样才能治好 https://m-mip.39.net/fk/mipso_5686247.html

一:简介

我们通常所说的接口的作用是用于定义一套标准、约束、规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现。

在JDK1.8中打破了这样的认识,接口中的方法可以有方法体,但需要关键字static或者default来修饰,使用static来修饰的称之为静态方法,静态方法通过接口名来调用,使用default来修饰的称之为默认方法,默认方法通过实例对象来调用。

静态方法和默认方法的作用:

静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。当为接口扩展方法时,只需要提供该方法的默认实现即可,至于对应的实现类可以重写也可以使用默认的实现,这样所有的实现类不会报语法错误:Xxx不是抽象的,并且未覆盖Yxx中的抽象方法。

二:示例

IHello接口

publicinterfaceIHello{//使用abstract修饰不修饰都行voidsayHi();staticvoidsayHello(){System.out.println(staticmethod:sayhello);}defaultvoidsayByebye(){System.out.println(defaultmehtod:saybyebye);}}HelloImpl实现类

publicclassHelloImplimplementsIHello{

OverridepublicvoidsayHi(){System.out.println(normalmethod:sayhi);}}Main

publicclassMain{publicstaticvoidmain(String[]args){HelloImplhelloImpl=newHelloImpl();//对于abstract抽象方法通过实例对象来调用helloImpl.sayHi();//default方法只能通过实例对象来调用helloImpl.sayByebye();//静态方法通过接口名.方法名()来调用IHello.sayHello();//接口是不允许new的,如果使用new后面必须跟上一对花括号用于实现抽象方法,这种方式被称为匿名实现类,匿名实现类是一种没有名称的实现类//匿名实现类的好处:不用再单独声明一个类,缺点:由于没有名字,不能重复使用,只能使用一次newIHello(){

OverridepublicvoidsayHi(){System.out.println(normalmethod:sayhi);}}.sayHi();}}执行结果:normalmethod:sayhidefaultmehtod:saybyebyestaticmethod:sayhellonormalmethod:sayhi

本号致力于发表实用的技术文章,欢迎

分享 转发
TOP
发新话题 回复该主题