这样申明有什么意思:“父类 变量 = new 父类的派生类”
在看《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的派生类?
谢谢!