一个很好的关于多态的题目
2010-01-20 16:38
239 查看
abstract class BaseClass { public virtual void MethodA() { Console.WriteLine("Base.A"); } public virtual void MethodB() { Console.WriteLine("Base.B"); } } class Class1 : BaseClass { public void MethodA(string arg) { Console.WriteLine("Class1.A"); } public override void MethodB() { Console.WriteLine("Class1.B"); } } class Class2 : Class1 { new public void MethodB() { Console.WriteLine("Class2.B"); } } public class Program { static void Main(string[] args) { Class2 class2 = new Class2(); class2.MethodA(); } }
看到这个题目,我的反应是
Class1 methodA 隐藏了BaseClass 里的methodA,所以Class2 默认继承了Class1 methodA的方法,所以输出结果是Class1.MethodA
但是这里忽略了 Class1 中methodA的定义:
public void MethodA(string arg)
多了一个参数,相当于是对父类方法的重载。所以Base.MethodA()实际也是被继承过来了。
正确的结果是:
Base.MethodA
相关文章推荐
- 一个关于多态的问题
- 一个关于输入、输出流的小题目(1)
- 解决一个题目。关于结构体与链表的操作
- 关于一个很好的google play营销网站
- 3、关于匿名内部类一个小题目(补全代码)
- 关于一个很好用的数据恢复软件分享
- 一个关于多态之虚函数的例子
- 关于位运算的一个题目
- 关于C++多态的一个例子
- 一个关于文件行操作的题目
- 看一个多态的题目
- 关于共享内存的一个题目(未完)
- 一个很好的blog地址,关于手机测试(appium\ Robotium等 )
- 关于group by 的一个SQL题目
- XML Design - (A Gentle Transition from XML to RDF)(一个很好的关于RDF的slides)
- 很恶心的一个关于字符串的题目!
- 一个 很好的题目;
- 一个关于SQL语句的练习题目
- 关于一个很久之前看过的题目
- 很好的一个关于maven工程创建的文章