Механизм динамического привязки позволяет ссылкам на базовые классы указывать на правильные объекты подкласса, что позволяет базовому классу, ориентированному на классовое программирование.
Тем не менее, динамическое связывание не удастся в следующих двух ситуациях.
1. Метод базового класса является частным или окончательным изменением
Это легко понять, потому что личный означает, что метод невидим для подкласса. Напишите метод с тем же именем в подклассе не для переопределения метода родительского класса, а для восстановления нового метода, поэтому нет проблем полиморфизма. То же самое также можно объяснить окончательным, потому что метод также непревзойден.
2. Метод статически модифицирован
Код выглядит следующим образом.
класс база {public static void staticmethod () {System.out.println ("Base Staticmehtod"); } public void DynamicMeHtod () {System.out.println ("Base DynamicMehtod"); }} класс sub extends base {public static void staticmethod () {system.out.println ("substaticmehtod"); } public void dynamicMeHtod () {System.out.println ("sub dynamicmehtod"); }} открытый класс tj4 {public static void main (string args []) {base c = new sub (); C.StaticMethod (); c.dynamicmehtod (); }}/ * Output: base staticmehtod sub dynamicmehtod */Результат выходного вывода не выводит «substaticmehtod», как и ожидалось. Потому что статические методы связаны с классом, а не с объектом, c.staticmethod (); эквивалентен car.staticmethod (); Поэтому старайтесь не использовать переменные экземпляра, чтобы вызовать статические методы, чтобы избежать путаницы.
Приведенное выше подробное объяснение статического метода Java не является полиморфным. Это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.