如何在外部类构造函数中创建内部类的实例

时间:2017-01-23 12:38:34

标签: java class constructor nested

我从C ++切换到Java并且嵌套类有问题。我想在超类的构造函数中启动一个子类的实例。我这样试过,但似乎错了。

public class Aircraft {
    public class LandingGear {
    }

    public Aircraft() {
        Aircraft.LandingGear myLandingGear = this.new LandingGear();
    }
}

这个想法是Aircraft类的每个实例都有一个子类LandingGear的实例“myLandingGear”。

3 个答案:

答案 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();
    }
}