自定义一个抽象类,用来计算圆的面积

 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 }

 经过调试发现,在实例化派生类之后,使用派生类对象实例化抽象类后,直接用实例化的派生类对象访问抽象类的半径属性或使用实例化的派生类对象调用派生类方法皆可,

毕竟继承自抽象类的派生类可以访问抽象类里面的属性

原文地址:https://www.cnblogs.com/liuyaozhi/p/4942286.html