我有2个班级:
public class LineGeometry
{
public LineGeometry(Point startPoint, Vector direction)
{
this.startPoint = startPoint; this.direction = direction;
}
}
public class LineSegmentGeometry : LineGeometry
{
Point endPoint;
public LineSegmentGeometry(Point startPoint, Point endPoint, Vector direction) : base (startPoint, direction)
{
this.startPoint = startPoint; this.direction = direction; this.endPoint = endPoint;
}
}
基本上,我希望再向LineSegmentGeometry
添加一个构造函数,它是这样的:
LineSegmentGeometry(Point endPoint, LineGeometry l)
{
this.startPoint = l.startPoint;
this.direction = l.direction;
this.endPoint = endPoint;
}
由于LineSegmentGeometry
基本上与其基类完全相同,但1个附加变量除外。
但是,编译器会因为其保护级别而抛出基类无法访问的错误。这种方式是将构造函数声明为一个好主意,如果可以的话,我该如何解决错误?
答案 0 :(得分:3)
听起来你应该调用基类构造函数:
LineSegmentGeometry(Point endPoint, LineGeometry l)
: base(l.StartPoint, l.Direction)
{
this.endPoint = endPoint;
}
请注意,我将StartPoint
和Direction
称为属性 - 我希望字段是私有的,但是要公开或内部属性公开值。如果还没有,那么您可以添加LineGeometry(LineGeometry)
构造函数,然后使用: base(l)
,然后让 复制字段。