我们知道java中,是只能单继承(类与类之间)而可以多实现接口的,这是为什么呢?(接口和接口之间支持多继承)
1.举例,如果C类同时继承了A和B类,那么如果分别在A和B中定义了一样的方法
那么C 类根本就不知道应该调用哪个方法,因为父类中的方法可能初始化了一些数据,不能明确应该继承谁的方法,包括复写父类的方法时候,也是一样,不知道该复写谁的,所以,为了避免困扰,java中只支持单继承。
-----------------------------------------------------------------------------------------------------------
2.那么为什么接口可以同时多个实现呢,这是因为即便在A和B接口中定义了同样的方法,他们也没有具体的实现,接口中的方法都必须要是抽象(abstract)的,没有方法体(具体实现),所以子类实现接口之后,实现谁的方法都无所谓了,不会对功能有什么影响
but:java8.0之后,接口中可以定义默认方法了,格式如下:
default void defaultMethod(){
//方法体
}
默认方法必须有方法体,要么就是声明没有方法体的抽象方法 default和abstract不可同时修饰方法
同时该默认方法由实现类的实例对象来调用。
问题来了。。。
如果不同的接口定义了同样的默认方法,怎么办,答案是:
编译报错:说子类继承了“默认方法名”的不相关的默认值。。
ps:接口中也可以定义静态方法哦,可以有方法体,由接口名.来调用.
如果有疑问或者对你有点点帮助,希望你评论哦