假设我们有一个名为“Animal”的类和子类“Cat”和“Dog”。
假设我们希望在将它们的对象传递到任何“Animal”的中间函数时,都允许“Cat”和“Dog”发出声音(猫:“喵” - 狗:“汪”)。
为什么我们必须使用虚方法来实现这一点?难道我们不能在“Animal”中不定义虚方法的情况下执行Animal->makeNoise()吗?由于“Cat”和“Dog”都是动物,因此“makeNoise()”是否在引用传递给函数的动物上已经很清楚了?
这只是语法问题还是更深层次的问题?我很确定在Java中我们不需要这样做。
假设我们希望在将它们的对象传递到任何“Animal”的中间函数时,都允许“Cat”和“Dog”发出声音(猫:“喵” - 狗:“汪”)。
为什么我们必须使用虚方法来实现这一点?难道我们不能在“Animal”中不定义虚方法的情况下执行Animal->makeNoise()吗?由于“Cat”和“Dog”都是动物,因此“makeNoise()”是否在引用传递给函数的动物上已经很清楚了?
这只是语法问题还是更深层次的问题?我很确定在Java中我们不需要这样做。
makeNoise()
方法的老鼠,会发生什么? - Martin York