C++里,多态和继承有什么关系?请举例说明

发布网友 发布时间:2022-04-02 06:41

我来回答

3个回答

懂视网 时间:2022-04-02 11:02

Java中继承和多态的关系为:继承是指子类继承父类中所有的属性和方法,但对于private的属性和方法,子类虽然可以继承,却无法访问。而多态是指父类的某个方法被子类重写时,可以各自产生自己的功能行为。

  

  Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

  

  

热心网友 时间:2022-04-02 08:10

有了继承,指向基类类型的指针或引用就可以被用来指向派生类类型的对象。然后就可以编写程序来操纵这些指针或引用而不用考虑它们所指向的对象的实际类型。
用一个基类指针或引用来操纵多个派生类型的能力被称为多态性。

在C++中,多态性分为两种,一种称为编译时多态,另一种为运行时多态
分别解释下:
1.编译时多态,也就是函数重载,所谓函数重载是指同一个函数名可以对应着多个函数的实现,具体调用哪个按照由参数个数,参数类型等来决定,这个简单,就不说了
2.运行时多态,就是虚函数。 在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,以实现你所想要的功能。
比如:
class A {
public: virtual void test() {...}
void display(){...}
};
class B : public A {
public: virtual void test() {...}
void display(A& a){ a.display(); }
};

那么
A* a = new A();
a->test();调用的是基类的
A* b = new B();
b->test();调用的是派生类的。

如果在A中不申明virtual,
那么
A* b = new B();
b->test(); 会调用基类的

热心网友 时间:2022-04-02 09:28

polymorphism是一种抽象的概念

表达的就是一种抽象,举一个例子

“人”是一种抽象,它是多态的

为什么呢?因为“人”这个简单字眼的背后

包含的很多互斥状态:
黑人?白人?黄人?
中国人?美国人?火星人?
男人?女人?人妖?
等等的这这些一切都是属于人的状态

每当我们提及“人”时,便会覆盖所有的这些状态
这时,“人”就是多态的,“多”主要指互斥状态的存在

在面向对象中也是如此,继承是实现多态的一种手段
同样的目的,还有多继承,接口等等方式

如果你要问多态有什么用?
那么你可以问问自己,抽象有什么用?

再举个有意思的例子

如果没有“人”,只有“男人”,“女人”两种叫法

那么*,就要分成男*,女*
《未成年人保*》就会分成《未成年男人保*》,《未成年女人保*》

“杀人放火”得*成“杀男/女人放火”

然而实际上,这些多余的称谓都是不必要的。

在此种情况下,人类通过总结,得到更高级的抽象。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com