代码不仅仅是单词,所以请看:
public abstract class ViewObject: INotifyPropertyChanged {
public virtual string Id {
get {
return this.GetType().Name;
}
}
}
public class Object : ViewObject {
private string id = string.Empty;
public override string Id {
get {
return this.id;
}
set {
this.id = value;
}
}
}
在抽象类中实现基本实现的所需行为的正确方法是什么(是的,它应该有一个基本实现,但不能用于其他事情)?
我只能考虑使用new
键而不是override
来隐藏基本实现,但这是对的吗?
答案 0 :(得分:0)
您已经在使用继承。当方法名称和参数相同时,覆盖方法很有用。 在这里你可以使用方法重载。 for method overload name相同但参数不同。你也可以在继承中使用。 我希望这很有用
答案 1 :(得分:-1)
如果使用new
关键字并且某人将派生对象强制转换为基类,则将调用基本实现而不是派生实现。为避免这种情况,需要override
。
但目前这是不可能的,因为你的基类不支持setter。所以坚持使用override
并在基类中实现一个set
方法,只抛出NotSupportedExecption
。
public abstract class ViewObject
{
public virtual string Id
{
get { return this.GetType().Name; }
set { throw new NotSupportedException(); }
}
}
public class Object : ViewObject
{
private string id = string.Empty;
public override string Id
{
get { return this.id; }
set { this.id = value; }
}
}