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 myClass13 //{14 // PRivate int r = 0;15 // /// <summary>16 // /// 圓半徑17 // /// </summary>18 // public int R19 // {20 // get21 // {22 // return r;23 // }24 // set25 // {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 Program45 //{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 }
經過調試發現,在實例化派生類之后,使用派生類對象實例化抽象類后,直接用實例化的派生類對象訪問抽象類的半徑屬性或使用實例化的派生類對象調用派生類方法皆可,
畢竟繼承自抽象類的派生類可以訪問抽象類里面的屬性
新聞熱點
疑難解答