gpt4 book ai didi

oop - 多态性与继承作为 oop 的支柱

转载 作者:行者123 更新时间:2023-12-04 21:43:43 28 4
gpt4 key购买 nike

如这里所述

https://standardofnorms.wordpress.com/2012/09/02/4-pillars-of-object-oriented-programming/

并作为许多求职面试中的正确答案——问题的一般正确答案:“OOP 的 4 大支柱是什么?”是:

  1. 抽象

  2. 封装

  3. 继承

  4. 多态性

我不明白的是,多态性中不包含继承怎么办?

也就是说,不使用继承怎么能用多态呢?

我知道的使用多态性的唯一方法是

class A{
virtual void foo(){cout<<"A";}
void bar(){cout<<"A";}
};
class B : public A{
virtual foo(){cout<<"B";}
};

A* ab = new B();
ab->foo();//prints B, using polymorphism
ab->bar();//prints A, using inheritance

A* a = new A();
a->foo();//prints A
a->bar();//prints A, obviously

在我看来,多态性带来了继承。

请解释为什么它与众不同 - 或者为什么不能将继承作为其自身的关键支柱而丢弃。我们可以使用或不使用多态性。

最佳答案

What I fail to understand is how inheritence not contained in polymorphism?

in other words, how can polymorphism be used without the use of inheritence?

多态有 3 种主要类型,只有一种需要继承才能起作用。

  1. Ad-hoc 多态性:这通常称为函数/方法重载,其中多个函数可以共享相同的名称但具有不同的签名。返回类型是否是签名的一部分取决于语言。

  2. 参数多态性:在 OOP 中,这通常称为泛型,其中一个函数/方法可以使用多个具体类型,并返回多个具体类型,从而提供编译时安全性。

  3. 子类型多态性:我想大多数人在谈到多态性时都会想到这一点。如您所知,这是子类型为其父函数/方法提供不同实现的时候。

您可以从此处的维基百科文章中阅读更多关于不同类型的多态性:https://en.wikipedia.org/wiki/Polymorphism_(computer_science)

关于oop - 多态性与继承作为 oop 的支柱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38330357/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com