首页 新闻 会员 周边

关于继承的一个小问题

0
悬赏园豆:5 [已解决问题] 解决于 2010-12-01 15:48

 

1 class Program
2 {
3 static void Main(string[] args)
4 {
5 TestClass2 tc2 = new TestClass2();
6 TestClass tc = new TestClass2();
7
8 Console.WriteLine(tc2.GetType().ToString());
9 Console.WriteLine(tc.GetType().ToString());
10 }
11 }
12
13 class TestClass
14 {
15 //some code
16   }
17
18 class TestClass2:TestClass
19 {
20 //some code
21 }

各位大虾请看上面的代码,小弟想问的是第5、6行实例化后的TestClass2的两个对象tc和tc2有什么区别,输出的类型都是TestClass2,常用哪一种?

一菜鸟的主页 一菜鸟 | 初学一级 | 园豆:139
提问于:2010-12-01 15:30
< >
分享
最佳答案
0

由于GetType()返回的是实例对象的类型,所以既然两个实例都是new TestClass2(),所以都返回TestClass2;

至于区别,主要是tc可以指向TestClass及其所有继承类的实例,而tc2只能指向所有TestClass2及其继承类的实例; 如果你还有别的类从TestClass继承,比如TestClass3,你可以写tc = new TestClass3()。这也是tc的好处。

这样用得多了后,渐渐就有了提炼接口的想法。这才是真正的好处。

收获园豆:4
代码为生 | 菜鸟二级 |园豆:229 | 2010-12-01 15:41
其他回答(1)
0

没有区别,常用第5行的这种

其实继承不是这么玩的,不配合工厂或者IOC,继承和接口没啥意思

收获园豆:1
Gray Zhang | 园豆:17610 (专家六级) | 2010-12-01 15:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册