C#父类引用指向子类
2012-12-11 23:01
162 查看
今天研究了一下 C#中有关父类引用指向子类的问题。所谓“父类引用指向子类”是指声明为父类对象,但实例化创建子类对象。举例说明父类Teacher、子类Professor,声明和实例化:Teacher liming = new Professor (); 将liming声明为教师类,但实例化成教授。先看一段代码:
输出结果如下:
![](http://img.my.csdn.net/uploads/201212/11/1355238364_7409.png)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class A { public virtual void print() { Console.WriteLine ( "A::print()" ); } } class B : A { public override void print() { Console.WriteLine("B::print()"); } } class C : B { public void print(A a) { a.print(); } public override void print() { Console.WriteLine("C::print()"); } static void Main(string[] args) { A a = new A (); A pa = new A (); A pb = new B (); A pc = new C (); B b = new B (); C c = new C (); a.print (); b.print(); c.print (); pa.print(); pb.print(); pc.print(); c.print(a); c.print(b); c.print(c); String str1 = pa.GetType().ToString(); String str2 = pb.GetType().ToString(); String str3 = pc.GetType().ToString(); Console.WriteLine(str1); Console.WriteLine(str2); Console.WriteLine(str3); Console.ReadKey(); } } }
输出结果如下:
![](http://img.my.csdn.net/uploads/201212/11/1355238364_7409.png)
相关文章推荐
- C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序
- C#怎么理解“父类引用指向子类对象”
- C#怎么理解“父类引用指向子类对象”
- c# 父类的引用指向子类的实例
- 关于继承及父类引用指向子类的一些总结
- 父类引用指向子类对象
- 札记—适配器模式(穿插父类引用指向子类)
- C++ 多态问题:为什么不直接用子类引用子类,而是用父类指针指向子类
- Java 中深层理解父类引用指向子类对象
- 从对象的内存角度来理解父类引用指向子类对象
- Java中,父类引用指向子类对象的问题分析
- 关于父类引用指向子类对象(A a = New B();)的使用,理解向上转型
- 父类引用指向子类对象详解
- Java 父类引用指向子类对象
- 父类引用指向子类对象
- 父类引用指向子类对象
- 指向子类对象的父类引用(向上转型)
- Java多态--父类引用指向子类对象
- Java 中深层理解父类引用指向子类对象
- 如何理解父类引用指向子类对象