Я проходил тест и встретил вопрос, в котором мы не нашли соглашения с моими коллегами.
С ++
1 class Base {};
2 class Derived : public Base {};
3 class Foo
4 {
5 public:
6 Foo()
7 {
-8- Base* b = new Derived(); // Concept name is?
9 }
10 };
C #
1 abstract class Base{}
2 public class Derived : Base{}
3
4 public class Foo
5 {
6 public Foo
7 {
-8- Base b = new Derived(); // Concept name is?
9 }
10 }
Вопрос в том, что строка № 8, приведенная выше, является примером следующей концепции oo
- Полиморфизм
- Aggregation
- Инкапсуляция
- Абстракция
- Наследование
Пожалуйста, поставьте ссылку с ответом на источник знаний.
P.S. Тест называется «OO Concept» на брейнбенче. Это бесплатно.
Обновление:
От одного ответа, который защищает полиморфизм
"Проще говоря, полиморфизм - это
способность одного типа, А, появляться как
и использоваться как другой тип, Б.
строго типизированные языки, это обычно
означает, что тип А каким-то образом происходит от
тип B или тип A реализует
интерфейс, представляющий тип B. "
Из википедии, которая защищает наследство
Наследование также иногда называют
обобщение, потому что is-a
отношения представляют собой иерархию
между классами объектов.
и
Следовательно, наследование имеет другое
взгляд, двойственный, называется полиморфизмом,
который описывает много кусков кода
контролируется общим контролем
Код.
поэтому Base = new Derived()
показывает 'is a' ( наследование ). И следствием этого является полиморфизм .
Так что я сомневаюсь, что правильно?