我从C ++切换到Java并且嵌套类有问题。我想在超类的构造函数中启动一个子类的实例。我这样试过,但似乎错了。
public class Aircraft {
public class LandingGear {
}
public Aircraft() {
Aircraft.LandingGear myLandingGear = this.new LandingGear();
}
}
这个想法是Aircraft类的每个实例都有一个子类LandingGear的实例“myLandingGear”。
答案 0 :(得分:2)
对于这个用例,你的嵌套类应该是static
(如果它将被嵌套),然后你只使用一个简单的new
:
public class Aircraft {
public static class LandingGear {
// ----^
}
public Aircraft() {
Aircraft.LandingGear myLandingGear = new LandingGear();
// --------------------------------------^^^^
}
}
如果它不是静态的,它就是内部类,根据您的描述,它不是您想要的。 More on nested classes in this Java tutorial.
但除非LandingGear
嵌套在Aircraft
内,否则请考虑将其作为对等体。
答案 1 :(得分:0)
每架飞机都会有一架LandingGear
public class Aircraft {
private LandingGear myLandingGear;
public Aircraft() {
myLandingGear = new LandingGear();
}
public LandingGear getLandingGear() {
return this.myLandingGear;
}
}
答案 2 :(得分:0)
public class Aircraft {
public class LandingGear {
public static void m1()
{
//Your code snipet
}
}
public Aircraft() {
LandingGear.m1();
}
}