new & Override
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace ConsoleApplication1
6{
7 class Program
8 {
9
10 static void Main(string[] args)
11 {
12 baseClass bc;
13 class1 ct1 = new class1();
14
15 class2 ct2 = new class2();
16
17 ct1.prinf();
18 bc = ct1;
19 bc.prinf();
20
21 Console.WriteLine("---------------------");
22
23 ct2.prinf();
24 bc = ct2;
25 bc.prinf();
26
27 }
28 }
29
30 public class baseClass
31 {
32 private int index = 0;
33
34 public virtual void prinf()
35 {
36
37 Console.WriteLine("这是基类虚方法" + index.ToString());
38
39 }
40
41 }
42
43 public class class1 : baseClass
44 {
45 private int index = 1;
46
47 public override void prinf()
48 {
49
50 Console.WriteLine("这是子类新的方法" + index.ToString());
51
52 }
53
54 }
55
56 public class class2 : baseClass
57 {
58 private int index = 2;
59
60 public new void prinf()
61 {
62
63 Console.WriteLine("这是子类新的方法" + index.ToString());
64
65 }
66
67 }
68
69
70}
71
运行结果:
这是子类新的方法1
这是子类新的方法1
---------------------
这是子类新的方法2
这是基类虚方法0
如上
使用override重写printf方法,通过父类引用一样只能看到重写后的方法;
如果使用new隐藏printf方法,父类子类引用各自对应方法;
override重写虚方法,那么就只剩下重写以后的方法;
new隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了;
真想弄些实际应用的例子,想好了补上.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
运行结果:
这是子类新的方法
这是子类新的方法
---------------------
这是子类新的方法2
如上
使用override
如果使用new隐藏printf方法,父类子类引用各自对应方法;
override重写虚方法,那么就只剩下重写以后的方法;
new隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了;
真想弄些实际应用的例子,想好了补上.