我们可以使用基类对象访问派生类属性吗?
我有一个基类
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中的属性吗?
答案 0 :(得分:5)
没有。正如FredrikMörk在their answer here中所述:
基类没有(更重要的是不应该)知道任何事情 关于派生类属性。不同的派生类可以有不同的集合 添加了属性。让基类意识到这一点会抵消 面向对象设计的重要原则
答案 1 :(得分:1)
没有。您只需在要放置FnmaRecord实例的类上创建TitleHolder实例,以便可以访问TitleHolder和FnmaRecord的属性。