解决Java接口中多重继承中名字冲突的问题

解决接口多重继承中名字冲突的问题

子接口继承父接口的情况下(类实现多个接口的情况与此类似)

  1. 父子接口有相同名称的常量或方法时,子接口覆盖父接口;
  2. 在多个父接口中存在同名的方法时,此时子接口可以委托其中一个父接口的方法加 以解决。
 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));  
	} 
} 

你可能感兴趣的:(解决Java接口中多重继承中名字冲突的问题)