抽象类和ReadOnly属性

ser*_*hio 8 .net c# vb.net oop

我们有三个班级;

Line
PoliLine
SuperPoliLine
Run Code Online (Sandbox Code Playgroud)

因为所有三个类都Distance被定义了.

但只有Linea Distance可以设置.

是否有可能构建一个公共抽象(MustInherit)类Segment,具有Distanceas(abstract +?ReadOnly)成员?

关于VB.NET的问题,但C#答案也受到了欢迎.


商业背景

想象一下公共汽车.它有很多Stations,MainStations和2 TerminalStations.因此Line位于2个站之间,PoliLine介于2 MainStation秒之间,SuperPoliLine位于2个TerminalStations之间.所有"线"都是"分段",但只有两个站之间的距离A-> B - 可以定义线.

Mar*_*ell 1

您不能同时覆盖和重新声明(以添加集合) - 但您可以这样做:

基类:

protected virtual int FooImpl { get; set; } // or abstract
public int Foo { get { return FooImpl; } }
Run Code Online (Sandbox Code Playgroud)

派生类:

new public int Foo {
    get { return FooImpl; }
    set { FooImpl = value; }
}

// your implementation here... 
protected override FooImpl { get { ... } set { ... } }
Run Code Online (Sandbox Code Playgroud)

现在您还可以根据需要重写 FooImpl。

  • 由于“PolyLine”无法替代“Line”,因此不应从中派生。也许给他们一个共同的基类。 (2认同)