Java嵌套类问题

提问

当我最近开始编程时,我在此编码领域有些困惑.

有一个编程课程称为嵌套类.但是,当我要使用它时,它实际上并没有完成作业所希望的.这是我需要实现的示例:

public class Zoo {
    ...
    public static class monkey {
        ...
    }
}

并在主要

Zoo zoo1 = new Zoo();
...
zoo1.monkey.setage(int);
...

但是这里有一个问题,就是每当我想从zoo1调用Monkey时,调试器都会说这是不可能的(记住我想这样做而不创建Monkey的实例)

提前致谢

更新:我只是想知道这是否是一种语言限制,那么oracle本身如何使用system.out.printf轻松地做到这一点?

最佳答案

猴子对我来说看起来是静止的.但是,它们应该是公共的,而不是公共的.

我会说setage()不是静态方法.如果是这样,并且年龄是猴子的财产,那么静态地将其命名就没有意义-您要设置谁的年龄?

但是,问题在于您似乎无法通过外部类类型的变量访问静态内部类.

因此,应该是Zoo.monkey而不是zoo1.monkey.

如果只想控制作用域或命名,则可以使用packages.

例如,您可能具有以下内容:

package com.example.application.feature;

public class MyClass {
    public void f() {
        System.out.println("Hello");
    }
}

在名为com / example / application / feature / MyClass.java的源文件中.