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 }
经过调试发现,在实例化派生类之后,使用派生类对象实例化抽象类后,直接用实例化的派生类对象访问抽象类的半径属性或使用实例化的派生类对象调用派生类方法皆可,
毕竟继承自抽象类的派生类可以访问抽象类里面的属性