我是编程新手,我想问一下运行时多态性的最终用途是什么?
示例:
class Parent
{
//do something
}
class Child : Parent
{
//do something
}
main()
{
Parent p = new Child (); // run-time polymorphism
Child q = new Child(); // no polymorphism
}我的问题是,我们使用第一行(Parent p = new Child();)来实现运行时多态性,但我们可以使用第二行(Child q = new Child();)来代替第一行...
那么它们之间的区别是什么呢?为什么我们要使用运行时多态性?
发布于 2011-12-28 03:18:18
您提供的代码片段没有实际用途。但是想一想这个方法:
public void DoSomething( Parent parent ){ ... }您可以这样做:
Child child = new Child();
DoSomething( child );在本例中,对于DoSomething,它将只是一个父对象。它不关心它是否是一个子类。
希望能有所帮助。
发布于 2011-12-28 03:18:55
虽然你的例子说明了为什么这是一个糟糕的例子,但想象一下如下所示:
main()
{
Parent p = Factory("SomeCondition"); ///run-time polymorphism
}
Parent Factory(string condition)
{
if (condition == "SomeCondition")
{
return new Child();
}
else
{
return new Parent();
}
}当工厂被调用时,我们不知道返回类型实际上是什么,它可能是一个子类型,也可能是一个父类型。
发布于 2011-12-28 03:28:00
运行时多态性的最终用途是泛化。它通过允许使用公共超类的子类来促进代码重用。您不希望为来自不同类的每个对象编写单独的方法,这将变得乏味。
运行时多态性允许您编写可由许多不同子类使用的泛化代码。
https://stackoverflow.com/questions/8648325
复制相似问题