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 }