2016-08-25 90 views
4

如由于在I类可以这样做:块的界面被延伸

public final class Foo{} 

至极意味着没有更多的类可以延伸,使得Foo类...例如String类是final的,所以没有自定义类可以扩展类String

如何防止做同样的一个接口?

如果我做

public interface ISome{ 
    void fly(); 
} 

我想允许

class A implements ISome {} 

但阻止

public interface IHouse extends ISome{ 
    void fly(); 
} 

这样

public final interface ISome{} 

是没有意义的...并会带来一个编译错误,如:

Illegal modifier for the interface 

回答

4

你不能。

据说Java设计者并不认为会有这样的合适用例:如果你不想让interface被扩展,那么你真的应该直接在具体的class中声明这些函数。

这就是说,你可以在C++中实现这个++作为这种语言的接口更是一个惯例的 - 只由纯虚函数,并且可以执行非可扩展诸如以下的技术friend船。