Метод переопределения означает различные реализации метода супертипа в подтипах. Если у нас есть абстрактный метод, мы должны реализовать это каждый раз, когда класс расширяет класс, содержащий абстрактный метод. Разве это не похоже на переопределение метода?Являются ли различные реализации абстрактного метода видимыми как переопределение?
ответ
Java Language Specification использует термин «переопределение» для этого:
Если не-абстрактный метод мК переопределяет абстрактный метод м из класса С, тем мК называется осуществить мА от C.
Здесь используется слово override, включающее случай реализации абстрактного метода. Реализация описывается как специализированный случай переопределения.
Не совсем. Если вы расширяете класс, который имеет метод с телом в метод, вы может переопределить метод, а если метод абстрактны, вы должны либо реализовать (Override) его или объявить сам подкласс абстрактного.
Абстрактный метод не имеет тела .
Но разные классы, которые реализуют этот абстрактный метод, действительно делают разные реализации каждый раз, когда они реализуются. Аргумент отсутствия тела метода не кажется мне правильным. Пожалуйста, объясните подробнее. –
Это по сути то же самое. В обоих случаях вы * * переопределяете метод: не имеет значения, является ли метод абстрактным или нет. Поэтому в обоих примерах можно написать '@ Overrides'. Разница между абстрактным и не абстрактным методом объясняется в моем ответе :) – Exfridos
Реализация абстрактного метода не переопределяет ИМХО, хотя может использоваться аннотация @Override
.
Реализация может быть переопределена. Подкласс конкретного класса, который имеет , реализованный абстрактный метод может переопределить реализацию конкретного класса, но в этот момент реализуемый метод не является абстрактным.
Итак, если у меня есть класс, который расширяет абстрактный класс, а также реализует интерфейс, который реализует абстрактный класс. В интерфейсе у меня есть абстрактный метод , мой абстрактный класс реализует этот абстрактный метод, и мой конкретный класс также реализует этот метод. Тогда как это будет; конкретный класс реализует этот абстрактный метод из интерфейса или переопределяет абстрактный метод из абстрактного класса? –
Это переопределение.
Доказательство:
abstract public class Shape {
public abstract void draw();
}
public class Square extends Shape {
@Override // this does not fail!
public void draw() {
System.out.println("I am square!");
}
public static void main(String[] args) {
Shape s = new Square();
s.draw();
}
}
Если бы это не было переопределение, использование @Override
должен был помечен компилятором (аннотаций процессор) как ошибка.
- 1. Переопределение абстрактного метода TimerTask.Run()
- 2. Переопределение абстрактного метода в Java
- 3. Переопределение абстрактного метода базового класса
- 4. ошибка переопределение Его абстрактного метода
- 5. Php: переопределение абстрактного метода идет не так
- 6. Динамическое переопределение абстрактного метода в C#
- 7. Повторное переопределение абстрактного метода функционального интерфейса?
- 8. Переопределение абстрактного метода с помощью виртуального
- 9. Не удается вернуть подклассы абстрактного класса в реализации абстрактного метода
- 10. Различные реализации абстрактного класса в Java
- 11. Аннотация производный класс без реализации абстрактного метода
- 12. Различные реализации одного метода интерфейса
- 13. Изменение типа параметра при реализации абстрактного метода
- 14. проблема при реализации абстрактного метода в Java
- 15. Различные реализации метода, который возвращает задачу
- 16. Переопределение абстрактного метода или использование одного единственного метода в перечислениях?
- 17. Переопределение метода и перегрузка метода из абстрактного класса
- 18. PHP. Возможно ли повторное использование не абстрактного метода как абстрактного?
- 19. Являются ли темы видимыми во время разработки?
- 20. Magento переопределение абстрактного блока
- 21. Переопределение метода
- 22. Как определить тип возвращаемого абстрактного метода быть класс реализации типа
- 23. Различные типы перечислений для метода реализации
- 24. как создать объект абстрактного класса без метода реализации
- 25. Переопределение родового абстрактного метода возвратного типа без предупреждений безопасности типа
- 26. Различные реализации открытия файлов
- 27. Как проверить, являются ли два элемента видимыми jquery?
- 28. Guice: нагнетание параметр, используемый при реализации абстрактного метода
- 29. C# реализации абстрактного метода класса: я должен сделать актерский состав?
- 30. Различные типы возвращаемых данных абстрактного метода в java без литья
Это * есть * переопределение! –