【发布时间】:2014-06-22 22:07:10
【问题描述】:
我一直在尝试做人,在第三版之后,在我了解到嵌套类的存在之后,决定从头开始。到目前为止,我已经输入了这个:
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");
}
}
}
}
我该如何解决这个问题?我从来没有尝试过在类中嵌套类,我真的希望它能够工作,但是:
它只需要写在一个类文件中,所以我可以有嵌套类但只有一个大的公共类文件。
我希望能够使用“arm.left.method”或“left.arm.method”来使用左臂的方法。因为我想指定我说的是哪只手臂。
【问题讨论】:
-
left是side类的实例,并且该类没有任何arm字段,因此您不能使用left.arm。你想在这里实现什么?可能是arm.hi()而不是left.arm.hi()(这里arm是在构造函数中创建的local 变量,而不是side类的field)? -
不确定您的语法是否正常。但如果有的话,它不是
left.arm.hi();,它只是arm.hi();。在您的代码中,arm 是它自己的指针,而不是 left 的一部分。 -
只需将您的
arm指针重命名为leftArm -
您的“只有一个类文件”要求意味着您不能使用这种方法。嵌套类编译成单独的类文件。
标签: java class constructor nested