Да, вы можете это сделать. Интерфейс может расширять несколько интерфейсов, как показано ниже:
interface Maininterface extends inter1, inter2, inter3 {
// methods
}
Один класс также может реализовывать несколько интерфейсов. Что делать, если два интерфейса имеют метод, определяющий одно и то же имя и подпись?
Существует сложная точка:
interface A {
void test();
}
interface B {
void test();
}
class C implements A, B {
@Override
public void test() {
}
}
. Тогда одна реализация работает для обоих:).
Прочитайте мой полный пост здесь:
http://codeinventions.blogspot.com/2014/07/can-interface-extend-multiple.html
Вы можете расширить несколько Interfaces
, но вы не можете расширять несколько classes
.
Причина, по которой в Java невозможно расширить несколько классов, - это плохой опыт от C ++, где это возможно .
Альтернативой для наследования multipe является то, что класс может реализовывать несколько интерфейсов (или интерфейс может расширять несколько интерфейсов)
Интерфейс может расширять несколько интерфейсов.
Класс может реализовывать несколько интерфейсов.
Однако класс может расширять только один класс.
Осторожно, как вы используете слова extends
и implements
, когда говорите о interface
и class
.
Я думаю, что ваше замешательство заключается в множественном наследовании, в котором это плохой практике, и в Java это тоже невозможно. Тем не менее, реализация нескольких интерфейсов разрешена на Java, и это также безопасно.
Класс Java может распространять только один родительский класс. Множественное наследование не допускается. Однако интерфейсы не являются классами, и интерфейс может распространять более одного родительского интерфейса.
, например, посмотрите здесь: http://www.tutorialspoint.com/ Java / java_interfaces.htm
Может ли интерфейс расширять несколько интерфейсов в java?
Ответ: Да.
Согласно JLS
Интерфейс может быть объявлен прямым расширением одного или нескольких других интерфейсов, что означает, что он неявно задает все типы членов, абстрактные методы и константы интерфейсов, которые он расширяет, за исключением любого члена типы и константы, которые он может скрывать.
void test()
и интерфейсом B сboolean test()
? (Является ли это двоюродным братом проблемы алмаза ?) __Пробовал это, и разумная вещь случается: не допускается, если тип возврата отличается. – Daniel 6 January 2015 в 18:38