Есть два типа полиморфизма:
1) При компиляции полиморфизм для нескольких методов одного и того же имени, если вы можете определить, какой из методов выполнения того же имени во время компонента он называется полиморфизмом при компиляции.
2) Если полиморфизм не определяется во время компиляции, он может только определить, какой из методов того же имени во время выполнения называется полиморфизм во время выполнения.
Метод охватывает два типа полиморфизма.
Xxxx x1 = new xxxx (список параметров);
Xxx xx1 = new xxx (список параметров);
x1.tstring ();
xx1.tstring ();
XXXX - родительский класс XXX.
Поскольку суб -объектив является не только родительским объектом, объекту родительского класса и суб -класс -объект назначается совместимость, а объекту родительского класса может быть назначен как суб -класс.
Xxxx x2 = new xxx (список параметров);
x2.tostring ();
Оператор x2 является экземпляром родительского класса, но получает подзадачный класс XXX.
Они разделены на два случая:
В зависимости от того, охватывает ли подкласс родительский метод.
Если нет покрытия, родительский метод выполняется.
При компиляции, согласно классу объекта, система не может определить метод, который должен быть выполнен в конце, и может быть определена только во время выполнения, так что это полиморф во время выполнения.
Родительский класс не выполняет все методы подкласса и может выполнять только метод суб -класса, описанный в этих родительских классах/подклассах.
Java Polymorphism реализация
Полиморфизм Java и C ++ реализуются с помощью динамического связывания или связывания во время выполнения. При вызове метода, на который ссылается объект, потому что компилятор не знает, указывает ли эта ссылка на объект типа, объясненный во время операции переменной, или объект подкласса типа. Следовательно, компилятор не может быть связан с конкретным методом для этого вызова. Только распознавание типа (RTT) работает через Java (RTT), связано с конкретным методом во время выполнения
Перезагрузка перезагрузки и перегрузки метода -это другое проявление полиморфизма Java. Переосмысление контроля -это полиморфизм между родителем и подклассом, а перегрузка перегрузки -это полиморфизм, проявление класса.
Приведите конкретный пример:
Классные люди {public String toString () {return "Я - народ!"; };} Class Girl расширяет People {public String toString () {return "Я девушка! []) {peical p = new Girl ();
Запустите результат:
Я девушка!
P - это ссылка на людей, но потому что это объект Girl в Runt
В глубине понимания полиморфизма Java
Отказ от ответственности, пример других одноклассников здесь, оригинальная ссылка: http://blog.csdn.net/thinkghoster/article/details/2307001
ТЕМА ТЕСТО
Класс A {public String show (d obj) {return "a and d";} public String show (abj) {return "a a at"; ) {Return "b и a";} class c extends b {} class d extends b {} public static void main (st Rags []) {a a a1 = new a (); b = new b (); ); ); C));
Отвечать
A и AA и AA и DB и AB и AA и DB и BB и BA и D
Анализ я начал делать эту тему.
Прежде всего, мы должны глубоко понять переписывание и перегрузку.
Во -вторых, в глубоком понимании этого предложения «когда объект супер -класса ссылается на переменные ссылки на подклассные объекты, тип эталонного объекта, а не эталонные переменные определяет, чей метод члена, но этот метод вызова должен быть в супер классе. Что. Определено в нем, то есть метод переписывания с помощью подразделения "" "
Затем давайте проанализируем эти вопросы
Вопрос: Как вы думаете, B переписывал метод шоу родителя А? Если вы переписываете его, сколько переписано?
Ответ: Переписывается, переписано, то есть на открытом строке (obj), почему публичное строковое шоу (b obj)?
Пример анализа
После прочтения приведенного выше анализа мы также анализируем два примера:
1. a2.show (b):
A2 является эталонной переменной, тип A, B является экземпляром B. Прежде всего, найти Show (b obj) в классе A, но не нашел его. Поэтому я пошел в супер класс А, и у А не было супер -класса, поэтому я обратился к А. Тайс ((супер) б), (супер) b как как, поэтому я нашел метод шоу (obj) в , но из -за объекта класса B, на который ссылается A2, B Переписывается метод шоу A (A OBJ), поэтому он, наконец, заблокирован на шоу (OBJ) класса B, вывод «B и A»
2. A2.show (c):
A2 является эталонной переменной, тип A, B является экземпляром B. Прежде всего, найти Show (c obj) в классе A, но не нашел его. Поэтому я нашел это в супер -категории А, и у А не было супер -класса, поэтому я обратился к А. Это ((супер) c), (супер) c, как Б. До сих пор, это A2.show (c) Станьте A2 A2 проблемой .show (b), а A2.show (b) была проанализирована как выход «B и A», так что здесь также вывод «B и A»