新手求助,关于私有变量继承的问题
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)
{
}
在四边形类中,那四个点不都是私有的吗,好像是继承到了正方形中(不是私有变量不能继承吗),为什么不用重新定义,好像是继承到了
------解决方案--------------------base(p1, p2, p3, p4)
你这问题和私有变量一点关系都没有,是调用基类构造函数...去看MSDN...
------解决方案--------------------继承的是公共属性而不是私有变量
------解决方案--------------------继承概念没搞懂啊 继承的是公共属性而不是私有变量
------解决方案--------------------汗,楼主是新手,大家不用太严厉. 告知就可以了.
------解决方案--------------------鼓励新手!
不懂就问!
------解决方案--------------------派生类实例都会包含一个完整的基类实例,无论字段私有与否,就像一个大盒子(派生类实例)套着小盒子(基类实例),基类私有的内容确实也到了派生类身体里,只是派生类看不见,但派生类可以通过基类公开的方法来间接访问之,你这个例子就是派生类通过基类公开的构造Quadrilateral(Point p1, Point p2, Point p3, Point p4)来访问基类的私有字段
------解决方案--------------------呵呵,私有变量是能在类的内部被调用,但是它是一直都存在的,通过类内部的方法(构造函数)去访问一个私有变量,这样是没有问题的。属性的封装也就是这么来的。