解决接口多重继承中名字冲突的问题
子接口继承父接口的情况下(类实现多个接口的情况与此类似)
- 父子接口有相同名称的常量或方法时,子接口覆盖父接口;
- 在多个父接口中存在同名的方法时,此时子接口可以委托其中一个父接口的方法加 以解决。
class SubClass extentds ParentClass implements Interface1,Interfac2{
…
}
如果子类从父类和接口中继承了同名的方法,继承采取类优先接口的原则。
示例:
package ch08;
interface Face1{
final static double PI=3.14;
public default double area(int r){ //与Face2同名的方法
return r*r*PI;
}
abstract double volume(int r,double h);
}
interface Face2{
final static double PI=3.1415926;
public default double area(int length){ //与Face1同名的方法
return length*length;
}
}
public class Demo implements Face1,Face2{
public double area(int r){
return Face2.super.area(r); //委托调用父接口Face2的area方法
}
public double volume(int r,double h){
return area(r)*h;
}
public static void main(String[] args){
Demo ap=new Demo();
System.out.println("PI="); //这里应该怎样调取PI 的值?
System.out.println("柱体体积为:"+ap.volume(1,2.0));
}
}