Java Polymorphism
Есть два типа полиморфизма:
(1) Полиморфизм времени компиляции (полиморфизм времени дизайна): перегрузка метода.
(2) Полиморфизм времени выполнения: система выполнения Java решает, какой метод вызовать на основе типа экземпляра, вызывающего метод, который называется полиморфизмом времени выполнения. (Вещи, о которых мы обычно говорим, - это полиморфизм выполнения, поэтому полиморфизм в основном относится к полиморфизму времени выполнения)
Три необходимые условия для существования полиморфизма во время выполнения:
1. Должно быть наследование (включая реализацию интерфейсов);
2. Там должно быть переписывается;
3. Ссылка на родительский класс указывает на объект класса дочернего класса.
Преимущества полиморфизма:
1. Заместимость. Полиморфизмы взаимозаменяемы для существующих кодов. Например, полиморфизм работает на классе Circle Circle, а также работает над любой другой круговой геометрией, такой как кружок.
2. Расширимость. Полиморфизм масштабируется для кода. Добавление новых подклассов не влияет на работу и работу полиморфизмов существующих классов, наследования и других характеристик. На самом деле, легче получить полиморфные функции, добавляя новые подклассы. Например, на основе реализации полиморфизма конусов, полуконов и полушарий легко добавить полиморфизмы сфер.
3. Способность интерфейса. Полиморфизм достигается суперкласами посредством подписи метода, обеспечивая общий интерфейс для подклассов, а подклассы реализуются подклассами для улучшения или перезаписывания его. Как показано на рисунке 8.3. На рисунке Super Class Shape указывает два метода интерфейса, которые реализуют полиморфизм, Computearea () и ComputeVolume (). Подклассы, такие как круг и сфера, улучшают или переопределяют эти два метода границы раздела для достижения полиморфизма.
4. Гибкость. Он отражает гибкие и разнообразные операции в приложениях и повышает эффективность использования.
5. Простота. Полиморфизм упрощает процесс написания и модификации кода и модификации прикладного программного обеспечения, особенно при работе с операциями и операциями большого количества объектов, эта функция особенно заметна и важна.
Примечание. Приоритет от высокого до низкого: this.show (o), super.show (o), this.show ((super) o), super.show ((super) o).
Связанные вопросы интервью:
класс A {public String show (d obj) .. {return ("a and d"); } public String Show (obj) .. {return ("a и a"); }} класс B расширяет {public String show (b obj) .. {return ("b и b"); } public String Show (obj) .. {return ("b и a"); }} класс C Extends b ... {} класс D Extends b ... {}(2) Вопрос: Каковы следующие результаты выходных данных?
A a1 = новый a ();
A A2 = новый b ();
B b = new b ();
C C = новый c ();
D d = new d ();
System.out.println (a1.show (b)); ①
System.out.println (a1.show (c)); ②
System.out.println (a1.show (d)); ③
System.out.println (a2.show (b)); ④
System.out.println (a2.show (c)); ⑤
System.out.println (a2.show (d)); ⑥
System.out.println (b.show (b)); ⑦
System.out.println (b.show (c)); ⑧
System.out.println (b.show (d)); ⑨
(Iii) Ответ
① a и а
② a и а
③ A и D
④ B и
⑤ B и
⑥ A и D
⑦ B и B
⑧ B и B
⑨ A и D
проанализировать:
При задании такого рода вопроса вы всегда должны использовать приоритетный заказ:
Для первого вопроса:
A1 является созданным объектом класса A, так что это указывает на A, а затем ищет это. Show (b). Поскольку метода нет, он идет на Super.Show (b). Однако, поскольку класс A не имеет суперкласса, он идет к этому. Show (Super B). Поскольку Superclass B является, он эквивалентен этому. Show (A). Затем этот метод найден в классе A, поэтому A и A
Для вопроса 2:
Точно так же A1 является созданным объектом класса A, так что это указывает на A, а затем поиск этого. Show (c) метод в классе A. Поскольку такого метода нет, я перехожу в Super.show (c). Поскольку я ищу это в суперклассе класса A, но у A нет суперкласса, поэтому я иду к этому. Show (Super C). Поскольку Superclass C - B, я ищу это. Show (B) Метод в классе A, и я не нашел его. Затем B также имеет суперкласс, который является, поэтому я ищу это. Show (A), и я нашел его, поэтому я вывожу A и A;
Для вопроса 3:
Точно так же A1 является созданным объектом класса A, так что это указывает на A, а затем находит этот метод. Show (d) в классе A, и он найден, так что A и D выводятся;
Для вопроса 4:
A2 является эталонным объектом класса B с типом A, поэтому он указывает на класс A, а затем найдите это. Show (b) Метод в классе A, но он не найден, поэтому он достигает Super.show (b). Поскольку класс А не имеет суперкласса, он прибывает. Суперкласс B - это A, то есть Super B = A, так что выполните этот метод. show (a), поищите Show (a) в методе A и найдите его, но, поскольку A2 является эталонным объектом класса B, а класс B охватывает метод шоу (A) класса A, окончательное выполнение метода Show (a) в классе B, то есть выходе B и A;
Для вопроса 5:
A2 является эталонным объектом класса B, с типом A, так что это указывает на класс A, а затем ищет этот метод Show (c) в классе A, но он не был найден, так что это был метод Super.show (c). Поскольку класс А не имеет суперкласса, это B, так что это B, поэтому он находится в классе A, но он не найден. B также имеет SuperClass, то есть A, поэтому он продолжает искать метод шоу (A) в классе A и найден, но потому что A2 является эталонным объектом класса B, а класс B охватывает метод шоу (A) класса A, поэтому он наконец выполняется. Метод шоу (а) в классе B, то есть вывод B и A;
По вопросу 6:
A2 является эталонным объектом класса B, с типом A, так что это указывает на класс A, а затем найдите это. Show (d) Метод в классе A и нашел его. Однако, поскольку A2 является эталонным объектом класса B, он находится в классе B, поэтому обнаружено, есть ли какой -либо переопределенный метод шоу (D) в классе B, поэтому он выполняется. Таким образом, метод шоу (D) в классе A, то есть вывода A и D;
По вопросу седьмой:
B является созданным объектом класса B. Премьер -министр выполняет это .show (b) ищет метод шоу (b) в классе B, находит его и непосредственно выводит B и B;
По вопросу 8:
B - созданный объект класса B. Премьер -министр выполняет это .show (c) и ищет метод шоу (C) в классе B, но он не найден, поэтому, когда я иду в Super.show (c), суперкласс B - это, поэтому, когда я ищу метод шоу (c) в классе A, но это не найдено, поэтому, когда я выхожу на это. Покажите (b) F Метод в классе B, я нахожу его, поэтому, когда я выполняю метод шоу (b) в классе B, I вывода B и B;
Для вопроса 9:
B является созданным объектом класса B. Премьер -министр выполняет это. Show (d), ищет метод шоу (D) в классе B, но он не найден, поэтому я отправился в Super.show (d), а суперкласс B - это класс A, поэтому я ищу метод шоу (D) в классе A, и я нашел его, и вывод A и D;
Это метод, который я суммировал после прочтения вопросов в Интернете. Я надеюсь, что это будет полезно для всех.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!