前言:
眼前我们对“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内部类创建