This question already has answers here:
Accessing derived class property members from base class object in CSharp
(2个答案)
6年前关闭。
我们可以使用基类对象访问派生类的属性吗?
我正在上基础课
并且有许多派生类继承了FnmaRecord类
现在,我可以在另一个类中使用FnmaRecord的实例来访问TitleHolder中的属性吗?
(2个答案)
6年前关闭。
我们可以使用基类对象访问派生类的属性吗?
我正在上基础课
public abstract class FnmaRecord
{
public int Id { get; set; }
public abstract String Prefix
{
get;
}
}
并且有许多派生类继承了FnmaRecord类
public class TransactionHeader : FnmaRecord
{
public override string Prefix { get {return "TH";} }
public static readonly string TransactionId = "T100099-002";
public String TransactionControlNumber { get; set; }
}
public class TitleHolder : FnmaRecord
{
public override string Prefix { get {return "02C";} }
public string TitleHolderName { get; set; }
}
现在,我可以在另一个类中使用FnmaRecord的实例来访问TitleHolder中的属性吗?
最佳答案
不。正如FredrikMörk在their answer here中所说:
基类不知道(更重要的是不知道)
关于派生类的属性。不同的派生类可能具有不同的一组
添加的属性。使基类意识到这一点将抵消
面向对象设计的重要原则