重写抽象类的抽象成员
本文关键字:成员 抽象 抽象类 重写 | 更新日期: 2023-09-27 18:14:11
我有一个基本抽象类BasePerson
。我有另一个抽象类BaseStudent
,它继承自BasePerson
。以下是示例。
public abstract class BasePerson
{
public string Name{get;set;}
public string LastName{get;set;}
public abstract object this[string propertyName]{get;set;}
}
public abstract class BaseStudent : BasePerson
{
public string Test{get;set;}
//this class inherits from BasePerson and it forces to override the indexer.
//I can do this:
public override object this[string propertyName]
{
get{return null;}
set
{
//do stuff;
}
}
}
public class Student : StudentBase
{
//other properties
}
现在我不能强制Student
类覆盖索引器。我应该怎么做才能强制Student重写索引器?我不能从BasePerson
类中删除索引器。
帮助感激!
如果你想强制它,不要在BaseStudent
上实现它。由于BaseStudent
是abstract
,它不需要来实现BasePerson
的所有abstract
成员。
public abstract class BasePerson
{
public string Name{get;set;}
public string LastName{get;set;}
public abstract object this[string propertyName]{get;set;}
}
public abstract class BaseStudent : BasePerson
{
public string Test{get;set;}
}
public class Student : BaseStudent
{
//must implement it here since Student isn't abstract!
}
abstract
类不需要定义它们继承类的所有 abstract
成员,因此您可以放心地将责任传递给任何实现它的具体类。Student
没有被定义为abstract
,所以它必须实现它所继承的基类链中尚未实现的任何成员。