猿问

关于继承的一个小问题

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,常用哪一种?


四季花海
浏览 366回答 2
2回答

拉风的咖菲猫

由于GetType()返回的是实例对象的类型,所以既然两个实例都是new TestClass2(),所以都返回TestClass2;至于区别,主要是tc可以指向TestClass及其所有继承类的实例,而tc2只能指向所有TestClass2及其继承类的实例; 如果你还有别的类从TestClass继承,比如TestClass3,你可以写tc = new TestClass3()。这也是tc的好处。这样用得多了后,渐渐就有了提炼接口的想法。这才是真正的好处。

狐的传说

没有区别,常用第5行的这种其实继承不是这么玩的,不配合工厂或者IOC,继承和接口没啥意思
随时随地看视频慕课网APP
我要回答