如何理解编程中的“多态”?

如何理解编程中的“多态”?

喜欢这个问题 | 分享 | 新建回答

回答

ACCT

Jun 4, 2022
3 赞

最简单粗暴的例子(不是很恰当):

校长想找个人来搬东西,不在乎是老师还是学生,因此有:

HeadMaster::callSomeone(Person person)
{
    person.moveSomething();
}

Person p1 = Student();
Person p2 = Teacher();

hm.callSomeone(p1); // 这是可以的
hm.callSomeone(p2); // 这也是可以的 

这样做的好处就是:对于校长来说,只需要考虑将搬东西这个事件完成即可,至于是找老师来还是学生来无所谓,老师是肩膀扛的,学生是地上拖的(moveSomething内部实现不同)不关校长的事。

这样一来,多态实现了程序上的解耦,callSomeone可以耦合在抽象程度更高的数据结构上。