【发布时间】:2016-07-08 18:13:09
【问题描述】:
这是一个例子:
abstract class baseClass
{
void aMethod
{
//something here...
}
}
class derivedClass : baseClass
{
void aMethod
{
//something here...
}
}
void main()
{
baseClass Object_1 = new derivedClass();
}
为什么 Object_1 被声明为 baseClass?程序员为什么要这样做? Object_1 是什么类型?它是基类还是派生类?如果我的 Object_1 是这样创建的,会有什么不同:
derivedClass Object_1 = new derivedClass();
?
我正在学习 C#,在这种情况下,这是我最感兴趣的环境。
【问题讨论】:
-
当您在编译时不知道派生类型是什么时,这经常在工厂模式中使用。此外,有时另一个类需要保存对某种类型的基类的引用,但它在编译时并不确切知道它是什么,而是在运行时计算出来。
-
为了通过其基类的接口访问对象。我可以有一个包含法拉利、福特、本田等的 List
,但是如果我想同时启动所有汽车,那么我可以使用 Car 的 start() 方法的基类并遍历调用该方法的 Cars , 例如。这样,您可以将具有共同基类但不同子类的对象组合在一起。 -
了解 SOLID 原则,尤其是 Liskov-Substitution Principle。
-
“Object_1 是使用 baseClass 初始化的”通常并不意味着“Object_1 声明为 baseClass 的实例”。除非你的意思是别的,请编辑你的帖子。
标签: c# class object inheritance