如何直接从java中的其他类访问内部类方法?

dtcbnfnu  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(323)

关闭。这个问题需要详细或明确。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,添加细节并澄清问题。

三天前关门。
改进这个问题
我实现了两个类似这样的接口:

public OuterClass implements Interface1 {

    public InnerClass implements Interface2 {

    }
}

如何直接从java中的其他类访问内部类方法?java中允许它吗?

drnojrws

drnojrws1#

在中定义方法时 InnerClass ,您需要具有的示例 InnerClass 对其调用(非静态)方法。因此,我们在您的示例中添加了一个简单的方法。。。

public class OuterClass implements Interface1 {

    public class InnerClass implements Interface2 {

        public void method() {
            System.out.println("hello");
        }
    }
}

... 创建的示例 InnerClass 并按如下方式调用该方法:

public static void main(String[] args) {
    OuterClass outer = new OuterClass();
    OuterClass.InnerClass inner = outer.new InnerClass();
    inner.method();
}
// output: hello

由于内部类不是静态的,因此需要 OuterClass 创建的示例 InnerClass 您可以在其上调用您的方法。
如果将内部类设置为静态,也可以在中定义静态方法 InnerClass :

public class OuterClass implements Interface1 {

    public static class InnerClass implements Interface2 {

        public void method() {
            System.out.println("hello");
        }

        public static void staticMethod() {
            System.out.println("static");
        }
    }
}

在这个场景中,您不需要 OuterClass 构造示例 InnerClass 因为它是静态可用的,并且不绑定到示例。此外,您可以调用内部类的静态方法,而无需 InnerClass :

// call static method without any instance
OuterClass.InnerClass.staticMethod();

// create instance of inner class without instance of outer class
OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.method(); // call method of inner class

// output: static
           hello

相关问题