Предположим, у вас есть два интерфейса I1 и I2 оба интерфейса имеют один и тот же методУточнить концепцию множественного наследования: может возникнуть проблема с структурой бриллианта?
1)public int add(int a) throws exception e1 //(Interface 1)
2)public int add(int a) throws exception e2 //(Interface 2)
теперь класс реализует как I1 и I2.
@override
public int add(int a) exception e1
{
//adding operation
}
Примечание: Я понимаю, что если реализовать несколько интерфейсов, которые имеют тот же метод, то только одна реализация будет там в реализующем классе.
ли компилятор делать вывод, является ли этот метод от I1 или I2 на основе бросках положение? Требуется ли уточнение подписи метода? (Я знаю, что подпись включает имя и параметры, переданные.)
Если мы реализовали оба интерфейса, а затем мы выбрасываем только e1, компилятор разрешит это, поскольку класс реализации на самом деле не реализует оба интерфейса? это вызовет бриллиант структура проблема?
Нужно ли реализовать тот же метод с предложением throws e1 и 2-е время e2? Когда я попробовал это, компилятор сказал мне, что у меня есть повторяющиеся методы.
Если мы реализуем первый I1, тогда он говорит, что это метод I1, и если мы сначала напишем I2, тогда он скажет свой метод I2. Объясните, почему это так.
Функция реализации должна реализовывать все интерфейсы. Это может потребовать от него исключения * исключений *. –
@Kerrek SB: Не могли бы вы немного рассказать о «Это может потребовать, чтобы он не выдавал никаких исключений». Я говорю, что класс реализовал только один метод без исключения? так что сказать? Метод I1 + метод I2? Или, если он пишет throws e1, компилятор знает, что этот метод от I1? ** Спасибо –
Что ты говоришь? Что означает «это должно сказать»? Кто должен сказать? Скажи когда? – EJP