Переопределение одного метода и последствия?

Прочитал что переопределение одного метода не очень таки полезная штука. Если у нас есть класс Car с методом drive() и мы в main'e создаем анонимный класс, который переопределяет этот метод. Лучше будет сделать интерфейс с методом drive() и сделать что-то наподобие такого, где Test это интерфейс:

Test test = new Test() {
            @Override
            public void drive() {
                System.out.println("Hello");
            }
        };

Объясните почему что переопределение одного метода не очень таки полезная штука и в чем плюс работать так через интерфейс?


Ответы (1 шт):

Автор решения: Roman Konoval

Использование интерфейса в таком случае делает код более расширяемым.

Во-первых, интерфейс лучше потому, что если потребуется, вы сможете его реализовать в классе (и использовать вместо того объекта, который сейчас "по-месту" создается), который уже наследуется от какого-то класса.

Это сейчас, в этой конкретной ситуации, вы передаете экземпляр анонимного класса, а в будущем в другом месте вам может понадобиться, чтоб конкретная реализация была в другом классе, т.е. чтоб метод drive был реализован в существующем классе, который уже наследуется. Если Test класс, вы этого не сможете сделать.

Вторая причина - используя интерфейс, вы сможете использовать лябду вместо анонимных классов.

→ Ссылка