我从C++切换到Java,并且嵌套类有问题。我想在超类的构造函数中启动子类的实例。我试过这样,但似乎错了。
public class Aircraft {
public class LandingGear {
}
public Aircraft() {
Aircraft.LandingGear myLandingGear = this.new LandingGear();
}
}
这个想法是,飞机类的每个实例都有一个子类着陆架的实例"myLandingGear"。
对于这个用例,你的嵌套类应该是static
的(如果它要嵌套的话),然后你只需要使用一个简单的new
:
public class Aircraft {
public static class LandingGear {
// ----^
}
public Aircraft() {
Aircraft.LandingGear myLandingGear = new LandingGear();
// --------------------------------------^^^^
}
}
当它不是静态的时,它是一个内部类,从你的描述来看,这不是你想要的。有关嵌套类的更多信息,请参阅此 Java 教程。
但是,除非有很好的理由将LandingGear
嵌套在Aircraft
中,否则请考虑将其设置为对等体。
每架飞机都有一个着陆架
public class Aircraft {
private LandingGear myLandingGear;
public Aircraft() {
myLandingGear = new LandingGear();
}
public LandingGear getLandingGear() {
return this.myLandingGear;
}
}
public class Aircraft {
public class LandingGear {
public static void m1()
{
//Your code snipet
}
}
public Aircraft() {
LandingGear.m1();
}
}