Эта статья в основном изучает контент, связанный с перегрузкой, переписыванием, полиморфизмом, статическим связыванием и динамическим связыванием в Java, следующим образом.
Перегрузка , английское имя является перегрузкой, что означает, что более одного метода с тем же именем определяется в классе. Количество параметров, типов параметров и порядок этих методов не может быть одинаковым. Возвратный тип может быть одинаковым или другим.
открытый класс tstaticoverload {static int height; tstaticoverload () {System.out.println («Посадка саженца»); hist = 0;} tstaticoverload (int initialHeight) {height = initialHeight; System.out.println («Создание нового дерева, которое« + высота + »); Высота + "Ноги высотой");} Статическая void info (String s) {System.out.println (s + ": дерево" + высота + "фута высотой");}} открытый класс Testso {public static void main (string [] args) {tstaticoverload t = new tstaticoverload (5); tstaticoverload.info (); tstaticoverload.info ("Метод перегрузки"); new tstaticoverload ();}}OUT: Создание нового дерева, которое составляет 5 футов высотой, составляет 5 футов.
Перепишите, английское имя переопределяется, что означает, что в случае наследования метод, определенный в подклассе, который имеет одинаковое имя, тот же тип возврата или совместимый тип и те же параметры, что и методы в базовом классе. Это называется подклассом переписывает метод базового класса. Это необходимый шаг для реализации полиморфизма.
Полиморфизм: полиморфизм - это способность одного и того же поведения иметь множество разных проявлений или форм.
Public Class Staticsupper {public Static String Staticget () {return "base staticget ()";} public String Dynamicget () {return "base dynamicget ()";}} class staticsUb extends staticsupper {pub static staticget staticget () {return "subtaticget ()";}} public String Dynamicget () {return ";)} return";)} return ";)} retact";)}} etrate ";)}} retury";)}}}} staticget () {return ";) Staticmub Extends staticsupper {pub static String Staticget () {return "mub staticget ()";} public String Dynamicget () {return "mub dynamicget ()";}} открытый класс staticpolymorphism {public static void main (string [] args) {staticsupper sup1 = new Statiscub (); System.out.println (sup1.staticget ()); System.out.println (sup1.dynamicget ()); Staticsupper sup2 = new Staticmub (); System.out.println (sup2.staticget ()); System.out.println (sup2.dynamicget ()); }}OUT: BASE StaticGet () SUMINOMICGET () BASE StaticGet () MUB Dynamicget ()
Концепция связывания программы:
Привязка относится к ассоциации метода вызова с классом (тело метода), где находится метод. Для Java связывание делится на статическое связывание и динамическое связывание; Или это называется ранним связыванием и поздним связыванием.
Статическое связывание:
Метод был связан до выполнения программы и реализована компилятором или другой программой подключения. Например: C.
Для Java это можно понимать как обязательное в течение периода компиляции программы; Здесь особенно ясно, что единственными методами в Java являются окончательные, статические, частные и конструкторы, которые являются ранним связыванием.
Динамическое связывание:
Позднее связывание: динамическое связывание относится к компилятору, не зная, какой метод вызовать на стадии компиляции до тех пор, пока время выполнения не будет связано в соответствии с типом конкретного объекта.
Если язык реализует позднее обязательство, он также должен предоставить некоторые механизмы, чтобы определить тип объекта во время работы и вызывать соответствующие методы отдельно. Другими словами, компилятор по -прежнему не знает типа объекта в настоящее время, но механизм вызова, вызывающий метод может исследовать его само по себе и найти правильный корпус метода. У разных языков есть разные способы внедрения позднего привязки. Но мы можем, по крайней мере, думать так: все они должны установить определенные специальные типы информации в объект.
Перегрузка метода включает в себя перегрузку статического метода и обычную перегрузку метода. Статическое перегрузка метода является статической привязкой, а вызов метода проходит через: имя класса. метод Обычная перегрузка метода является динамической привязкой, а вызовы методов - это ссылка на объект экземпляра. метод Конструктор может быть перегружен, но не может быть переписан.
Статические методы могут быть переписаны, но полиморфический эффект не достигнут.
Суммировать
Выше приведено в кратком обсуждении этой статьи о перегрузке, переписывании, полиморфизме, статическом связывании и динамическом связывании в Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!