龙空技术网

如何在Java main()方法中创建内部类对象?

软件架构 195

前言:

眼前我们对“java内部类创建”大体比较关怀,小伙伴们都需要了解一些“java内部类创建”的相关内容。那么小编在网上网罗了一些关于“java内部类创建””的相关文章,希望朋友们能喜欢,咱们一起来学习一下吧!

今天在看内部类时突然发现一个问题:main()方法不能直接创建内部类的对象,必须先创建外部类,然后通过外部类的实例来创建内部类对象,但是外部类的其他方法就可以直接创建内部类的对象,这是为什么呢?

示例代码如下所示:

public class Outer { private String name = "world"; public static void main(String[] args) { Inner inner = new Outer().new Inner(); inner.displayName(); new Outer().outerMethod(); } public void outerMethod() { Inner inner = new Inner(); inner.displayName(); Outer.Inner inner2 = new Outer.Inner(); inner2.displayName(); } public class Inner { String hello = "hello "; void displayName() { // 内部类可以访问外部类的任何变量 System.out.println(hello + name); } }}

输出结果:

我们都知道main()方法是主程序的入口,对于main()而言,虽然写在类中,但是却游离于任何类之外,因此某个类的非静态内部类对它而言不是直接可见的,不能直接创建,自然也就没办法直接访问。

当然,如果是静态内部类,就可以直接去创建了,不需要先创建外部类的实例。

示例代码如下所示,创建静态内部类StaticInner:

public class Outer { private String name = "world"; public static void main(String[] args) { Inner inner = new Outer().new Inner(); inner.displayName(); new Outer().outerMethod(); // 可以直接创建静态内部类 new StaticInner().displayName(); } public void outerMethod() { Inner inner = new Inner(); inner.displayName(); Outer.Inner inner2 = new Outer.Inner(); inner2.displayName(); } public class Inner { String hello = "hello "; void displayName() { // 内部类可以访问外部类的任何变量 System.out.println(hello + name); } } public static class StaticInner { String hello = "HELLO "; void displayName() { // 静态内部类不能访问外部类的非静态变量 System.out.println(hello); } }}

输出结果如下所示:

(此处已添加圈子卡片,请到今日头条客户端查看)

标签: #java内部类创建