10.12 派生类型的向上转型
派生类实际上是由基类的实例加上派生类新增的成员组成,将派生类向上转型就转换到它的基类类型,这种转换会让派生类中新增的成员变得“不可见”。我们仍使用“人-学生”为例,如代码清单10-15所示。
代码清单10-15 派生类型的向上转型
1 using System;
2
3 namespace ProgrammingCSharp4
4{
5 class Person
6{
7 public string Name;
8 public int Age;
9 public Person(string name,int age)
10{
11 Name=name;
12 Age=age;
13}
14}
15
16 class Student:Person
17{
18 public string School;
19 public Student(string name,int age,string school)
20:base(name,age)
21{
22 School=school;
23}
24}
25
26 class ClassExample
27{
28 public static void Main()
29{
30 Student student=new Student(“大雄”,12,“一中”);
31 Person person=student;
32 Console.WriteLine(person.Name);
33 Console.WriteLine(person.Age);
34//Console.WriteLine(person.School);
35}
36}
37}
上述代码运行结果如下:
大雄
12
对代码清单10-15的说明如表10-8所示。
Student类型的变量向上转型到Person类型,如图10-8所示。
图 10-8 Student类型的变量向上转型到Person类型