突然间理解了c++的多态性的意义。打个比喻,适当吗?
男人和女人,他们都继承于人类,他们有很多共性,例如:要吃饭、要睡觉、要小便等等。
但是,男人和女人,也有很多不同的地方,例如:小便的方式就不同。
多态性的意义,就是为了实现那些“不同”。
不知道这个比喻合适不合适?
所谓多态,就是多种状态,就是不同的状态的意思。
[解决办法]
其实……小便的方式也未必不同……
[解决办法]
我的比喻是,动物园,有狮子,有老虎。。。
不是多态就是: 狮子在吃东西,老虎在吃东西。
现在你有个基类叫动物了。
于是你可以说,动物在吃东西了,但是动物是什么?肯定会具体化到狮子和老虎身上。
没有狮子,老虎啊,动物就是个抽象的概念。
[解决办法]
相同的动作,不同的结果
[解决办法]
比喻是合理的。
不要忘了, 多态还包括静态多态(函数重载)。
维基百科上对于多态的描述:
In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions.
[解决办法]
你还需要深入理解,多态在运行时,就是实现相同的代码调用,调用不同子类的功能
[解决办法]
理解了,要进一步明白什么地方能用得上, 怎么使用多态.
想办法在你自己的工程中用一下,才能真正明白
[解决办法]
比喻很形象...
多态可以方便程序的扩展,例如只面向人类这个基类编程就好,
当引用或指针实际指向是男人或女人时,就掉用其自己小便的方法。
而某一天如果想加个人妖,那么只需引用或指针实际指向的是人妖就好,
程序的结构不必大调整,就可以增加人妖小便了....
另外你的比喻是父类与子类之间的多态性的表现,函数重载亦是多态性的表现,没错!
[解决办法]
比喻不恰当,多态关键的是运行时动态绑定类型。你的比喻是描述不同对象的多种形态,完全不对。