您的位置:首页 > 编程语言 > Java开发

java 8.0 关于接口可以有默认方法的小知识点

2018-01-17 16:30 393 查看
我们知道java中,是只能单继承(类与类之间)而可以多实现接口的,这是为什么呢?(接口和接口之间支持多继承)

1.举例,如果C类同时继承了A和B类,那么如果分别在A和B中定义了一样的方法

那么C 类根本就不知道应该调用哪个方法,因为父类中的方法可能初始化了一些数据,不能明确应该继承谁的方法,包括复写父类的方法时候,也是一样,不知道该复写谁的,所以,为了避免困扰,java中只支持单继承。

-----------------------------------------------------------------------------------------------------------

2.那么为什么接口可以同时多个实现呢,这是因为即便在A和B接口中定义了同样的方法,他们也没有具体的实现,接口中的方法都必须要是抽象(abstract)的,没有方法体(具体实现),所以子类实现接口之后,实现谁的方法都无所谓了,不会对功能有什么影响

but:java8.0之后,接口中可以定义默认方法了,格式如下:

default void defaultMethod(){

//方法体

}

默认方法必须有方法体,要么就是声明没有方法体的抽象方法 default和abstract不可同时修饰方法

同时该默认方法由实现类的实例对象来调用。

问题来了。。。

如果不同的接口定义了同样的默认方法,怎么办,答案是:

编译报错:说子类继承了“默认方法名”的不相关的默认值。。

ps:接口中也可以定义静态方法哦,可以有方法体,由接口名.来调用.

如果有疑问或者对你有点点帮助,希望你评论哦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: