【发布时间】:2011-07-21 08:26:02
【问题描述】:
从概念上讲,派生类似乎应该能够用读写属性覆盖只读属性。为什么这不可能?
Public Class Base
Protected _name As String
Public Overridable ReadOnly Property Name() As String
Get
return _name
End Get
End Property
End Class
Public Class Derived
Inherits Base
Public Overrides Property Name() As String
Get
Return MyBase.Name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
【问题讨论】:
-
我有一个更好的问题:为什么 SUBclass 能够在其基类中设置只读属性???
-
好问题,但只能由从事该语言的 OO 实现设计的微软人员来回答。
-
那么,我不应该这样做吗?
-
@Brian Driscol:对于接口或抽象基类提供只读属性以及派生接口或类提供可变版本实际上是一个非常好的模式。例如,如果使用 IList
完成了该操作,则需要读取(但不需要写入)传入的类似数组的 Animal 集合的类将能够接受 List 。顺便说一句,拥有一个不可变类也很好,它分别从同一个基类派生而来,只能通过其构造函数设置。