tntxia 发表于 2013-1-27 05:11:52

接口作用域

Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 
 
在Java的接口中,所有的方法都必须是public和abstract的,如果用户没有自己声称的话,系统会自动给方法加上这个属性。
 
我们来看这样的一段代码。
 
interface I { void setValue(int val); int getValue();}abstract class C implements I {int getValue(){return 0;}} 
当我们编译这段代码时,它会编译出错。错误是Cannot reduce the visibility of the inherited method from I。为什么呢?因为抽象类C实现了I,在重写I中的getValue方法时,没有声明类型,对于抽象类,系统并没有限制它必须为public类型,所以系统会默认为friendly类型,但是在接口中,所有的方法都是默认public 类型的,所以子类缩小了父类的作用域,这个时候系统就会报错。
 
 
 
 
 
页: [1]
查看完整版本: 接口作用域