Зависит от того, как вы определяете «удалить один метод».
Если у вас есть интерфейс
interface Interface{
void interface1();
void interface2();
}
И, например, два подкласса, которые расширяют его:
class Class1 implementes Interface {
@Override
public void interface1(){ ... }
@Override
public void interface2(){ ... }
}
class Class2 implementes Interface {
@Override
public void interface1(){ ... }
@Override
public void interface2(){ ... }
}
Тогда есть два сценария:
- Вы не хотите реализовывать, например, метод interface1 () в Class2:
- Вы не хотите иметь метод interface1 () в Class2
В случае 1. Как упоминал Робби Корнелиссен, вы можете просто предоставить реализацию по умолчанию в Интерфейсе:
default void interface1() { /*do default thing*/ }
В случае 2. вам необходимо удалить interface1 ()Метод из интерфейса.
Это можно сделать, просто переместив определение метода interface1 () в Class1 (и любой другой подкласс, который должен иметь его). но это не совсем общий подход.
Лучше всего извлечь, например, Interface1 с методом interface1 () и использовать этот интерфейс в классах, которым нужен этот метод. Вы окажетесь в такой ситуации:
interface Interface{
void interface2();
}
interface Interface1{
void interface2();
}
И, например, два подкласса, которые расширяют его:
class Class1 implementes Interface, Interface1 {
@Override
public void interface1(){ ... }
@Override
public void interface2(){ ... }
}
class Class2 implementes Interface {
@Override
public void interface2(){ ... }
}