[英]How can I access the result in Derived 1 and Derived 2 and not the base class
[英]Can not access derived class fields using base class
我无法从派生类访问简单字段,因此在字段的情况下使用多态是什么。 如果我必须向下转发到ResponseMBP以获取Name属性,那么我的客户端需要知道派生类。
那么多态性只适用于方法吗?
public abstract class Response
{
}
public class ResponseMbp : Response
{
public string Name = "My Name";
}
class Program
{
static void Main(string[] args)
{
Response r = new ResponseMbp();
Console.Write(r.Name);
}
}
您将变量定义为类型Response
。 此时,您只能访问Response
类及其超类中包含的属性和变量。
当属性命名为name
时,您还尝试引用Name
。
首先,对于字段多态性,您应该在基类和派生类中声明该字段(与方法多态性一样)。
现在在您的示例中,字段“name”只是派生类签名的一部分,并且您的基类的签名中没有“name”变量。 因此,基类的对象虽然使用派生类进行实例化,但只会显示基类签名项。 因此,由于这个原因,您无法在示例中使用r.name。
要了解字段多态性的正确用法,请参阅此链接。
ResponseMbp
继承自Response
。 因此ResponseMbp
是一个Response
,但Response
不是ResponseMbp
。
由于您在ResponseMbp
中定义了属性Name
,因此Response
不知道或不关心它。
如果在Response
定义了Name
,则ResponseMbp
将继承该属性,并且可以从任一类访问它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.