【发布时间】:2017-09-22 12:27:32
【问题描述】:
小心,因为我是 C# 的新手!所以我有一个常规类Cube,它继承自抽象类Shape3D,后者又继承自抽象类Shape2D。
Shape2D提供两个抽象属性:Area & Perimeter。 Cube 构造函数调用基类构造函数,并设置新对象的长度、高度和宽度。
由于某种原因,我从Cube 收到此错误:
Error: 'Cube' does not implement inherited abstract member 'Shape2D.Area.get'
Error: 'Cube' does not implement inherited abstract member 'Shape2D.Perimeter.get'
Shape2D 的外观是这样的:
abstract class Shape2D : Shape
{
private double _length, _width;
public double Length{..}
public double Width{..}
public abstract double Area{ get; }
public abstract double Perimeter{ get; }
protected Shape2D(ShapeType shapeType, double length, double width)
: base(shapeType)
{
_length = length;
_width = width;
}
public override string ToString(){..}
}
Shape 3D:
abstract class Shape3D : Shape2D
{
protected Shape2D _baseShape;
private double _height;
public double Height{..}
public virtual double MantelArea{..}
public virtual double TotalSurfaceArea{..}
public virtual double Volume{..}
protected Shape3D(ShapeType shapeType, Shape2D baseShape, double height)
: base(shapeType, height, height)
{
_baseShape = baseShape;
_height = height;
}
public override string ToString(){..}
}
Cube:
class Cube : Shape3D --> This returns inherited error.
{
...
}
我用谷歌搜索了我的**,但没有发现任何有用的东西。为什么我的普通类不从抽象类继承抽象成员?谁能指导一下?
【问题讨论】:
标签: c# inheritance abstract-class abstract