双嵌套类

时间:2014-06-22 22:07:11

标签: java class constructor nested

我一直在尝试创建一个人,在第三版之后,在我了解了嵌套类的存在之后,决定从头开始。到目前为止,我已将其输入:

public class Person {
    public Person() {
        side left = new side();
        side.limb arm = left.new limb();
        left.arm.hi();
        // Arm can not be resolved or is not a field.
    }

    class side {
        class limb {
            public void hi() {
                System.out.println("Hi");
            }
        }
    }

}

我该如何解决这个问题?我从来没有尝试过在类中嵌套类,我真的希望这可以工作,但是:

  1. 它只需要写在一个类文件中,所以我可以使用嵌套类但只有一个大型公共类文件。

  2. 我希望能够使用“arm.left.method”或“left.arm.method”来使用左臂的方法。因为我想指明我在谈论哪一只手臂。

2 个答案:

答案 0 :(得分:0)

我相信你遇到的问题是你正在将Limb视为Side类中的成员变量。即你正在使用side.limb,好像这个类是写的:

class Side {
    public Limb sidesLimb;

    class Limb {
        public void hi();
        System.out.println();
    }
}

现在您可以执行以下操作:

Side left = new Side();
left.sidesLimb = new Limb();
left.sidesLimb.hi();

实际上,您忘记在Side类中添加Limb类型的成员变量。

答案 1 :(得分:0)

确定。我所做的是为了保持指定它的哪一方的能力,如下:

public class Person{
    public static void main(String[] args){
    Person joe = new Person();  
}
public Person(){
doubleLimb arm = new doubleLimb();
arm.left.hi();
}
class doubleLimb{
    limb right;
    limb left;
    public doubleLimb(){
        left = new limb();
        right = new limb();
    }
}
class limb{
    public void hi(){
    System.out.println("Hi");
    }
    }
}

它的作用基本上是针对具有左侧和右侧的东西,它使肢体名称成为一个空类的名称,它只创建左右命名的新肢体。