1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Test07
7 {
8 /****************************************************
9 *
10 * 示例代碼
11 * ***************************************************/
12 //public abstract class myClass
13 //{
14 // private int r = 0;
15 // /// <summary>
16 // /// 圓半徑
17 // /// </summary>
18 // public int R
19 // {
20 // get
21 // {
22 // return r;
23 // }
24 // set
25 // {
26 // r = value;
27 // }
28 // }
29 // /// <summary>
30 // /// 抽象方法,用來計算圓面積
31 // /// </summary>
32 // public abstract double Area();
33 //}
34 //public class DriveClass : myClass//繼承抽象類
35 //{
36 // /// <summary>
37 // /// 重寫抽象類中計算圓面積的方法
38 // /// </summary>
39 // public override double Area()
40 // {
41 // return Math.PI * R * R;
42 // }
43 //}
44 //class Program
45 //{
46 // static void Main(string[] args)
47 // {
48 // DriveClass driveclass = new DriveClass();//實例化派生類
49 // myClass myclass = driveclass;//使用派生類對象實例化抽象類
50 // myclass.R = 3;//使用抽象類對象訪問抽象類中的半徑屬性
51 // Console.WriteLine("圓面積為:" + myclass.Area());//使用抽象類對象調用派生類中的的方法
52 // }
53 //}
54
55
56 /****************************************************
57 *
58 * 我的代碼
59 * ***************************************************/
60 public abstract class myClass
61 {
62 private int r;
63 public int R
64 {
65 get { return r; }
66 set { r = value; }
67 }
68 public abstract double Area();
69 }
70 public class Driveclass : myClass
71 {
72 public override double Area()
73 {
74 return Math.PI * R * R;
75 }
76 }
77 class Program
78 {
79 static void Main(string[] args)
80 {
81 Driveclass driveclass = new Driveclass();
82 myClass myclass = driveclass;
83 driveclass.R = 1;
84
85 Console.WriteLine("圓的面積是"+ driveclass.Area());
86 }
87 }
88 }
經過調試發現,在實例化派生類之後,使用派生類對象實例化抽象類後,直接用實例化的派生類對象訪問抽象類的半徑屬性或使用實例化的派生類對象調用派生類方法皆可,
畢竟繼承自抽象類的派生類可以訪問抽象類裡面的屬性