Переопределение одного метода и последствия?
Прочитал что переопределение одного метода не очень таки полезная штука. Если у нас есть класс Car с методом drive() и мы в main'e создаем анонимный класс, который переопределяет этот метод. Лучше будет сделать интерфейс с методом drive() и сделать что-то наподобие такого, где Test это интерфейс:
Test test = new Test() {
@Override
public void drive() {
System.out.println("Hello");
}
};
Объясните почему что переопределение одного метода не очень таки полезная штука и в чем плюс работать так через интерфейс?
Ответы (1 шт):
Использование интерфейса в таком случае делает код более расширяемым.
Во-первых, интерфейс лучше потому, что если потребуется, вы сможете его реализовать в классе (и использовать вместо того объекта, который сейчас "по-месту" создается), который уже наследуется от какого-то класса.
Это сейчас, в этой конкретной ситуации, вы передаете экземпляр анонимного класса, а в будущем в другом месте вам может понадобиться, чтоб конкретная реализация была в другом классе, т.е. чтоб метод drive был реализован в существующем классе, который уже наследуется. Если Test класс, вы этого не сможете сделать.
Вторая причина - используя интерфейс, вы сможете использовать лябду вместо анонимных классов.