这样申明有什么意思:“父类 变量 = new 父类的派生类”

chinasg chinasg 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在看《C#高级编程》,想问一下这样申明有什么意思:“父类 变量 = new 父类的派生类”?
如果这样申明,此时调用派生类自己特有的的方法、属性,编译就不能通过:变量.派生类特有的属性(方法)。 我的理解是,此时变量只能调用父类里面存在的东西?! 有什么实际的应用意义么?能用实列说明一下么?

对于书中145页的一句话,感到很别扭:

用一个基本引用指向派生类在语法上看起来很方便,但如果要使用派生类,这也是很基本的。可以理解为什么汽车电话公司要存储Customer派生的各种类。在那个例子中,只有两个顾客,所以很容易定义不同的变量,但实际的顾客有成百上千个,可以用一组数组来处理它们,可以使用下面的代码:
Customer [] Customers=new Customer[NCustomers];

//do something to initialize customers

foreach (Customer NextCustomers in Customers)
{
Console.WriteLine("{0,-20} owes ${1:F2})",NextCustomer.Name,NextCustomer.Balance);

}

在Customer引用数组中,无论用什么样的Customer派生类来表示客户,每个元素都可以指向任何类型的顾客。但是,如果变量不能存储派生类的引用,我们就必须有许多数组:一个Customer数组,一个Nevermore60Customers数组,以积累的每种类型的一个数组。这就是我们的方法:对于任何问题使用不能工作的派生类。
我们可以保证能把不同类型的类混合在一个数组中,但这会给编译器带来一个新的问题……


这段话,有许多疑问:
1、"但如果要使用派生类,这也是很基本的",什么很基本的?
2、这段代码中“Customer [] Customers=new Customer[NCustomers];”,都已经使用Customer类来定义、而且分配内存空间,怎么还能区别Customers数组里面的每个元素具体是Customer类还是Customer的派生类?



谢谢!
...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
chinasg
C# 111,129 成员 642,539 内容