财产继承

Ash*_*sha 0 c# inheritance properties

Public class ClassB : ClassA
{
}

public class GeneralClass
{
   public ClassA test
   {
      get{}
      set{}
   }
}
public class specificClass :GeneralClass
{
   public ClassB test
   {
      get{}
      set{}
   }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,属性测试是在来自generalClass的specificClass中继承的,但在这里我想将类型更改为ClassB(ClassB:ClassA).我可以做这样的事情,所以任何时候我使用specializedClass.test我不需要将其类型化为classB吗?

编辑1:我忘了提到现在它给了我一个警告,测试隐藏继承成员测试.如果隐藏意图使用新关键字.

Meh*_*ari 6

覆盖方法和属性时,无法修改返回类型.C#不支持返回类型协方差.

顺便说一句,如果您不需要覆盖该属性并且只想返回已转换为某种特定类型的基值,则可以声明一个new属性来隐藏基类1.请注意,它不是返回类型协方差.它只是一个具有相同名称的独特属性:

public new ClassB test {
     get { return base.test as ClassB; }
     set { base.test = value; }
} 
Run Code Online (Sandbox Code Playgroud)