这里使用的是哪一类?C#
如果我有一个基类“base”和一个派生类“derived”,那么哪一个是可以的这里使用的是哪一类?C#,c#,instantiation,C#,Instantiation,如果我有一个基类“base”和一个派生类“derived”,那么哪一个是可以的 Base b = new Base(); Derived d = new Derived(); (上面2行可以) 它们有什么意义吗?@Zuzlx的评论恰到好处: 所有的牛都是动物,但不是所有的动物都是牛 将Base替换为Animal,将Derived替换为Cow,这样会更加清晰: Animal a = new Cow(); // This works since a cow is always an animal
Base b = new Base();
Derived d = new Derived();
(上面2行可以)
它们有什么意义吗?@Zuzlx的评论恰到好处:
所有的牛都是动物,但不是所有的动物都是牛 将
Base
替换为Animal
,将Derived
替换为Cow
,这样会更加清晰:
Animal a = new Cow(); // This works since a cow is always an animal.
Cow c = new Animal(); // Just won't work.
不能将基实例指定给派生类型的变量。其他一切都是有效的。所有的牛都是动物,但不是所有的动物都是牛。我强烈建议你搜索和阅读多态性教程,这个问题的完整答案太宽泛了,不适合简单的问答,简单的“是的,xyz没问题”显然帮不了你多少忙,也可以。你为什么不试试呢?这会比在这里发帖更快。如果您需要文档,请参阅此结束原因:“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说都是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件”以及“Animal a=new Cow();”创建Cow或Animal类的实例?它创建
Cow
类的实例,但您只能将其引用为Animal
类,这意味着您只能访问Animal
提供的成员/方法。如果需要访问Cow
特定成员/方法,则需要cast
将其返回到Cow
。
Animal a = new Cow(); // This works since a cow is always an animal.
Cow c = new Animal(); // Just won't work.