我对编程有些新意,我对C#中的类,继承和多态有疑问.在了解这些主题的同时,我偶尔会遇到类似这样的代码:
Animal fluffy = new Cat(); // where Animal is a superclass of Cat*
Run Code Online (Sandbox Code Playgroud)
这让我很困惑,因为我不明白为什么有人会创建一个类型为Animal的变量来存储Cat类型的对象.为什么一个人不会简单地写这个:
Cat fluffy = new Cat();
Run Code Online (Sandbox Code Playgroud)
我确实理解为什么将子对象存储在父类型变量中是合法的,但不是为什么它有用.是否有充分的理由将Cat对象存储在Animal变量与Cat变量中?一个人可以举个例子吗?我确定它与多态和方法覆盖(和/或方法隐藏)有关,但我似乎无法绕过它.提前致谢!
目前,我在Nutshell和Type Basics(位于第2章)子主题中阅读C#5.0,引入了预定义类型和自定义类型的对称性术语......
...为什么作者谈到这些类型之间的对称性?有什么理由说类型是对称的?
这是原始段落:
C#的一个很好的方面是预定义类型和自定义类型几乎没有差异.预定义的int类型用作整数的蓝图.它保存数据-32位 - 并提供使用该数据的函数成员,例如ToString.同样,我们的自定义UnitConverter类型充当单位转换的蓝图.它保存数据 - 比率 - 并提供功能成员使用该数据.