关于面向对象多态的理解

子类对象地址可以赋值给父类指针,可以通过父类指针调用与子类函数名和参数表相同的虚函数,在程序运行时,当父类指针指向父类对象的地址时则调用父类的虚函数,当父类的指针指向子类对象的地址时调用子类的虚函数,让同一条函数语句调用达成不同的结果。

比如学校发通知元旦班级要有人去表演,同学A可以代表我们班去表演,同学B也可以,也可以整个班一起上去表演,代码和结果如下。

#include <stdlib.h>

#include <iostream>

 

class MyClass {

public:

virtual void play() {

std::cout << "全班同学一起表演" << std::endl;

}

};

class StudentA : public MyClass {

public:

virtual void play() {

std::cout << "同学A表演" << std::endl;

}

};

class StudentB : public MyClass {

public:

virtual void play() {

std::cout << "同学B表演" << std::endl;

}

};

 

void whoPlay(MyClass &c) {

c.play();

}

 

int main() {

MyClass c, *pC;

StudentA a;

StudentB b;

// 全班一起去表演

pC = &c;

pC->play();

// 同学代表班级A去表演

pC = &a;

pC->play();

// 同学代表班级B去表演

pC = &b;

pC->play();

 

system("pause");

return 0;

}

 

 

面向对象多态是指在面向对象编程中,同一个方法名可以在不同的对象上具有不同的实现方式。这意味着通过多态,可以使用统一的接口来处理不同类型的对象,而无需关心具体对象的类型。 多态性的实现依赖于继承和方法重写。当子类继承父类并重写父类的方法时,可以根据子类对象的实际类型来调用相应的方法实现。这样,通过一个通用的父类引用,可以在运行时确定具体调用哪个子类的方法。 多态性的好处在于增加了代码的灵活性和可扩展性。它允许我们编写通用的代码,能够处理不同类型的对象,而无需为每种特定类型编写专门的代码。这样可以减少代码的重复性,提高代码的复用性和可维护性。 另外,多态性还能提高代码的可扩展性。当需要添加新的子类时,只需保证新子类继承自相应的父类,并重写父类的方法即可,而不需要修改原有代码。这种扩展方式符合开闭原则,即对扩展开放,对修改关闭。 多态性还能提高代码的可读性和可理解性。通过使用统一的接口和方法名,可以使代码更易于理解和维护,减少了理解和学习新代码所需的认知负担。 总之,面向对象多态是一种重要的特性,它通过使用统一的接口和方法名,使得代码更具灵活性、可扩展性、可读性和可维护性。它是面向对象编程中的一个关键概念,能够提高代码的质量和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值