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,常用哪一种?
由于GetType()返回的是实例对象的类型,所以既然两个实例都是new TestClass2(),所以都返回TestClass2;
至于区别,主要是tc可以指向TestClass及其所有继承类的实例,而tc2只能指向所有TestClass2及其继承类的实例; 如果你还有别的类从TestClass继承,比如TestClass3,你可以写tc = new TestClass3()。这也是tc的好处。
这样用得多了后,渐渐就有了提炼接口的想法。这才是真正的好处。
没有区别,常用第5行的这种
其实继承不是这么玩的,不配合工厂或者IOC,继承和接口没啥意思