Java中为什么main()中不能创建内部类对象?
2024-09-01 15:45:21
对main方法而言,虽然写在类中,它是游离于任何类之外的,因此某类的非静态内部类对它而言是不直接可见的,也就无法直接访问 。
1:非静态内部类,必须有一个外部类的引用才能创建。
2:在外部类的非静态方法中,因为有隐含的外部类引用this,所以可以直接创建非静态内部类。
3:在外部类的静态方法中,因为没有this,所以必须先获得外部类引用,然后创建非静态内部类。
4:静态内部类,不需要外部类引用就可以直接创建。
5:同时静态的内部类,也不能直接访问外部类的非静态方法。
6:由此可以推测,非静态内部类之所以可以直接访问外部类的方法,是因为创建非静态内部类时,有一个隐含的外部类引用被传递进来。
public class OuterClass { public static void main(String[] args) { OuterClass outerClass = new OuterClass(); InnerClass innerClass = outerClass.new InnerClass(); StaticInnerClass staticInnerClass = new StaticInnerClass(); } public void foo() { InnerClass innerClass = new InnerClass(); StaticInnerClass staticInnerClass = new StaticInnerClass(); } public class InnerClass { } public static class StaticInnerClass { } }
最新文章
- Linux pthread
- 如何查看distirbution agent的执行进度
- 个人分享:平时开发中感觉几款不错 IDE 、插件、工具
- PAT 字符串-02 删除字符串中的子串
- AndroidManifest.xml 文件里面的内容介绍
- 织梦dedecms|文章模型内容页标签
- android app崩溃日志收集以及上传
- 织梦dedecms后台发布文章提示“标题不能为空”
- Python random() 函数
- Nginx从入门到实践(一)
- 18、实现strStr()
- Repeater 控件的嵌套使用
- 仙剑奇侠传 游戏 开发 教程 Xianjian qixia development Game development tutorial
- 【前端安全】JavaScript防流量劫持
- UGUI 判断元素进入舞台
- (win10)Wamp环境下php升级至PHP7.2
- jar 命令详解
- Linux查看进程,端口,访问url
- Ubuntu16.04安装搜狗拼音输入法
- 红黑树:个人理解与Python实现