class Quadrilateral : Shape
    {
        private CColor color;
        //定义四边形的四个顶点
        private Point point1, point2, point3, point4;        public CColor Color
        {
            get
            {
                return color;
            }
            set
            {
                color = value;
            }
        }        public Point Point1
        {
            get
            {
                return point1;
            }
            set
            {
                point1 = value;
            }
        }
        public Point Point2
        {
            get
            {
                return point2;
            }
            set
            {
                point2 = value;
            }
        }
        public Point Point3
        {
            get
            {
                return point3;
            }
            set
            {
                point3 = value;
            }
        }
        public Point Point4
        {
            get
            {
                return point4;
            }
            set
            {
                point4 = value;
            }
        }        public Quadrilateral()
        {
        }
        public Quadrilateral(Point p1, Point p2, Point p3, Point p4)
        {
            point1 = p1;
            point2 = p2;
            point3 = p3;
            point4 = p4;
        }
   class Square : Quadrilateral
    {
        public Square()
        {
        }
        public Square(Point p1, Point p2, Point p3, Point p4)
            : base(p1, p2, p3, p4)
        {
        }在四边形类中,那四个点不都是私有的吗,好像是继承到了正方形中(不是私有变量不能继承吗),为什么不用重新定义,好像是继承到了

解决方案 »

  1.   

    base(p1, p2, p3, p4)你这问题和私有变量一点关系都没有,是调用基类构造函数...去看MSDN...
      

  2.   

    派生类实例都会包含一个完整的基类实例,无论字段私有与否,就像一个大盒子(派生类实例)套着小盒子(基类实例),基类私有的内容确实也到了派生类身体里,只是派生类看不见,但派生类可以通过基类公开的方法来间接访问之,你这个例子就是派生类通过基类公开的构造Quadrilateral(Point p1, Point p2, Point p3, Point p4)来访问基类的私有字段