[英]Accessing subclass method from superclass C#
所以我知道我实际上不能从它的父类访问子类的方法和属性。 但我有一个程序将车辆存储在数组中(不是 arraylist - 它的作业)。 然后,车辆初始化为从车辆 class 派生的飞机、船或汽车 object。 这些子类具有独特的属性,我想知道 go 如何访问这些?
这是一些(简化的)相关代码:
Vehicle[] vehicles = new Vehicle[20];
vehicles[0] = new Airplane();
// Setting an attribute of the superclass
vehicles[0].Make = "Boeing";
// Set an attribute from the Airplane class
vehicles[0].Engine = "Jet"; //(obviously this doesn't work)
我该如何解决这个问题? 我已经研究了几个小时,但我被这个问题难住了。
谢谢:)
您可以通过其声明的类型访问引用。 因为您将数组声明为Vehicle
,所以您不能直接访问子类成员。
为此,将 object 与包含它的集合分开初始化:
var jet = new Airplane();
jet.Make = "Boeing";
jet.Engine = "Jet";
vehicles[0] = jet;
或者,使用 object 初始化程序:
vehicles[0] = new Airplane
{
Make = "Boeing",
Engine = "Jet"
};
在实例化它之后将其强制转换是非常荒谬的,但你也可以这样做:
vehicles[0] = new Airplane();
((Airplane)vehicles[0]).Make = "Boeing";
((Airplane)vehicles[0]).Engine = "Jet";
铸造解决了我的问题:
((Airplane)vehicles[currentItem]).EngineType = "Jet";
// Rather than
vehicles[currentItem].EngineType = "Jet";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.