C# 子类的实例?
如何在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
如果您想要一个
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
不能被视为子
的一种类型。