重写与多态
一、隐藏与多态
1 /*================多态==============*/
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Text;
6 using System.Threading.Tasks;
7
8 namespace 重写与多态
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 Vehicle v = new Car();
15 v.Run();//编译结果Car is running
16
17 /*==========多态,当我们用一个父类的变量引用一个子类的实例,调用了一个被重写了的成员的时候,总是能调到继承链上最新的版本,这就是多态。==== 在函数方法上(重写与隐藏的发生条件,函数成员,可见,签名一致)调用到的是跟这个实例类型相关的最新版本======*/
18 }
19 }
20
21 class Vehicle
22 {
23 public virtual void Run()
24 {
25 Console.WriteLine("I'm running");
26 }
27 }
28
29 class Car : Vehicle
30 {
31 public override void Run()
32 {
33 Console.WriteLine("Car is running");
34 }
35 }
36
37
38 }
39
40 /*===============隐藏================*/
41
42
43
44 using System;
45 using System.Collections.Generic;
46 using System.Linq;
47 using System.Text;
48 using System.Threading.Tasks;
49
50 namespace 重写与多态
51 {
52 class Program
53 {
54 static void Main(string[] args)
55 {
56 Vehicle v = new Car();
57 v.Run();//编译结果 I'm running
58 }
59 }
60
61 class Vehicle
62 {
63 public void Run()
64 {
65 Console.WriteLine("I'm running");
66 }
67 }
68
69 class Car : Vehicle
70 {
71 public void Run()
72 {
73 Console.WriteLine("Car is running");
74 }
75 }
76
77
78 }