C# 子类的实例?

C# 子类的实例?,c#,.net,inheritance,C#,.net,Inheritance,如何在C#中创建子类的实例 如果您想要一个Child的实例,那么newchild()是正确的选择。但是,由于Child是Parent的专门化,您可以通过Child或Parent引用来引用它(ch和pa) 因此,您必须决定是要以子对象还是父对象的身份访问该实例 如果你这样做 Child ch = new Child(); Parent pa = new Child(); 您有一个类型为Child的引用ch,指向Child的实例 如果你这样做 Child ch = new Child(); P

如何在C#中创建子类的实例


如果您想要一个
Child
的实例,那么
newchild()
是正确的选择。但是,由于
Child
Parent
的专门化,您可以通过
Child
Parent
引用来引用它(
ch
pa

因此,您必须决定是要以
子对象
还是
父对象
的身份访问该实例

如果你这样做

Child ch = new Child();
Parent pa = new Child();
您有一个类型为
Child
的引用
ch
,指向
Child
的实例

如果你这样做

Child ch = new Child();
Parent pa = new Child();
您有一个类型为
Parent
的引用,
pa
,指向
Child
的实例。也就是说,您正在利用继承在
父项
子项
之间建立“是”关系这一事实


换句话说,类型
Child
Parent
的专门化。因此,只要需要
Parent
的实例,就可以使用
Child
的实例

在您的代码中有四个实例化,它们的含义都略有不同:

// create a new instance of child, treat it as an instance of type child
Child ch = new Child();

// create a new instance of parent, treat it as an instance of parent
Parent pa = new Parent();

// this will not compile; you cannot store a less specialized type in a variable
// declared as a more specialized type
Child ch = new Parent();

// create a new instance of child, but treat it as its base type, parent
Parent pa = new Child();
哪一个是正确的取决于你想要达到的目标

请注意,以下两种情况都打印“这是来自子项”:


这比你想象的更基本! 我建议你读一篇解释遗传和多态性的论文,例如


对我来说,更多的是解释而不是解决方案…

请标记代码!^^^酷,T先生评论道!;-)我想以儿童为例。。。我需要调用上述4种类型中的哪一种?如果调用
new Child()
,您将获得类型
Child
的实例,但正如我所述,您可以使用类型
Child
Parent
的引用。除了创建实例之外,您还想完成什么?父对象或子对象的引用类型是什么意思?引用类型是否表示“=”符号的左侧部分?在您的示例中,
ch
的类型是
Child
,而
pa
的类型是
Parent
。其中任何一个都可能引用类型为
子类的实例。但是,
ch
不能引用
Parent
的实例,因为
Parent
不能被视为
的一种类型。