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所示。

10.12 派生类型的向上转型 - 图1

Student类型的变量向上转型到Person类型,如图10-8所示。

10.12 派生类型的向上转型 - 图2

图 10-8 Student类型的变量向上转型到Person类型