2016-08-25 61 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船。