今天看到一个朋友
在override,new上的问题搞错,呵呵我想很多刚入门的朋友也一样吧
我呢就查查资料顺便巩固一下自己的理解,现在整理出学习笔记.
先看段代码:
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
5
namespace 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

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

运行结果:
这是子类新的方法1
这是子类新的方法1
---------------------
这是子类新的方法2
这是基类虚方法0
如上
使用override重写printf方法,通过父类引用一样只能看到重写后的方法;
如果使用new隐藏printf方法,父类子类引用各自对应方法;
override重写虚方法,那么就只剩下重写以后的方法;
new隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了;
真想弄些实际应用的例子,想好了补上.