繁体   English   中英

覆盖抽象类的抽象成员

[英]Overriding abstract members of abstract classes

我有一个基本的抽象类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类覆盖索引器。 我应该怎么做才能强制学生覆盖索引器? 我无法从BasePerson类中删除索引器。

帮助赞赏!

如果要强制它,请不要在BaseStudent上实现它。 由于BaseStudentabstract ,因此不需要实现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因此它必须实现它已经继承的基类链尚未实现的任何成员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM