2016-08-25 2 views
4

В, так как в классе я могу сделать:интерфейс будет расширен

public final class Foo{} 

которым не означает, что нет больше классов могут распространяется, что Foo класса ... например, String класс является окончательным, поэтому пользовательский класс не может расширять класс 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 корабль.

Смежные вопросы