Переопределение метода можно предотвратить, используя ключевое слово final
, а также как предотвратить перегрузку?Как предотвратить метод перегрузки в Java?
ответ
Вы не можете сделать это на Java.
Перегруженный метод - это в основном просто другой метод.
попытка может выглядеть (что-то), как этот
void yourMethod(String arg) { /* ... */ }
void yourMethod(String arg, Object... prevent) {
throw new IllegalArgumentException();
}
, но это не будет работать, так как Java решает перегрузки, глядя на «лучший матч» или «самой конкретной подписи».
метод все еще может быть перегружен с
void yourMethod(String arg, String arg2) { /* ... */ }
, который будет называться при выполнении yourMethod("hello", "world")
.
Btw, почему вы хотите предотвратить перегрузку? Возможно, есть еще один способ сделать то, что вы хотите?
Отметьте класс final и его нельзя продлить. Тем не менее, это может победить другую цель.
Если вы перегрузите метод, вы создали метод с тем же именем, но с разными типами параметров. В Java метод определяется (частично) с точки зрения его параметров, и, следовательно, если два метода имеют одно и то же имя, но разные параметры, то это яблоки и апельсины, т. Е. Не то же самое. Короче говоря, вы не можете помешать кому-то создавать новые методы в классе, что по сути является тем, о чем вы просите.
Переопределение и перегрузка - это разные методы. Перегрузка - это способ объявления нескольких методов с одинаковыми именами, но с разными типами параметров или с разными параметрами.
Перегрузка не является техникой ООП вообще. Это удобное свойство, которое использует статическую информацию о времени компиляции, чтобы дать двум возможно совершенно несвязанным функциям одно и то же имя в исходном коде. – Zorf
Спасибо, Лайла. Я не знал, что это не часть ООП. – Sujee
Удалено слово «ООП» из моего ответа, поскольку я неправильно понял, что перегрузка является одной из методов ООП. – Sujee
Вы можете предотвратить метод от того перезаписаны, сделав его окончательным, но вы не можете предотвратить метод от того перегруженных. Ну, технически вы могли бы сделать сам класс окончательным, так что никакие методы вообще не могут быть добавлены путем создания подкласса, но я не думаю, что это хороший дизайн.
Методы переопределяются, а не перезаписываются. –
У вас было шесть лет, чтобы исправить это. Голосование для удаления. – EJP
Вы не можете. Потому что это почти бессмысленно.
Если вы хотите перегрузить метод handle(..)
, но вы не авторизованы, вы должны создать вместо этого doHandle(..)
.
Какой перегруженный метод используется во время компиляции (в отличие от переопределенных методов, которые определяются во время выполнения). Таким образом, точка перегрузки - это общее имя для общих операций. Отказ в том, что это вопрос стиля кода, а не что-то еще.
+1 для бессмысленных. Компилятор никогда не будет выбирать (один из) метод перегрузки, а не перегруженный. –
Err ... в чем смысл не перегружать метод?
Защита от переопределения разрешена, поскольку это может быть сделано другим программистом, который предположительно работает над другой частью кода, а его класс унаследован от вашего класса.
Перегрузка выполняется в том же классе и логически предполагается, что ее выполняет программист, который знает этот код и работает над той же частью кода.Итак, если он знает этот код (теоретически) и существует какая-то неотъемлемая опасность при перегрузке, то он должен знать это уже потому, что знает код.
Таким образом, перегрузка не может быть остановлена, как уже указывали другие.
простой! не вызывайте этот перегруженный метод.
public class Test
{
public void m(int a)
{
*your definition*
}
public void m(float a)
{
*your definition*
}
}
public static void main(Strings [] args)
{
Test t=new Test();
t.m(5);
}
- 1. метод перегрузки в Java
- 2. Java-метод перегрузки путаницы
- 3. Java Метод Перегрузки
- 4. Java, метод перегрузки
- 5. Как вызвать метод перегрузки в java
- 6. Перегрузки Java Метод унаследованных Интерфейс
- 7. метод перегрузки в python
- 8. Как предотвратить упаковку от перегрузки?
- 9. Метод контроллера перегрузки в Java Весна
- 10. метод перегрузки и наследование в Java
- 11. как предотвратить метод от переопределения в java
- 12. Предотвратить клиент от сервера перегрузки?
- 13. Метод перегрузки?
- 14. Дубликат метод, а метод-Перегрузки
- 15. метод перегрузки в C
- 16. Метод перегрузки в контроллере
- 17. Метод перегрузки в JavaScript
- 18. Метод перегрузки в WebAPI
- 19. Java-метод перегрузки с бокса/расширения
- 20. полиморфизм и метод перегрузки
- 21. Метод перегрузки Java с унаследованным интерфейсом
- 22. предотвратить window.opener.location.href формы перегрузки родителя
- 23. Машинопись - Перегрузки частный метод
- 24. метод перегрузки проблема в C#
- 25. Перегрузки абстрактный метод
- 26. метод перегрузки с маршрутизацией
- 27. Метод уникальной перегрузки F #
- 28. Метод перегрузки в неявном класса
- 29. Перегрузки метод в подклассе C++
- 30. типа Метод перегрузки
... такие как переопределение :-) – aioobe