AJPFX关于Java内部类及其实例化
2024-08-28 08:33:57
public class Outer {
private int size;
public class Inner {
private int counter = 10;
public void doStuff() {
size++;
}
}
public static void main(String args[]) {
Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.doStuff();
System.out.println(outer.size);
System.out.println(inner.counter);
// 编译错误,外部类不能访问内部类的变量
System.out.println(counter);
}
}
这段代码定义了一个外部类 Outer,它包含了一个内部类 Inner。将错误语句注释掉,编译,会生成两个 .class 文件:Outer.class 和 Outer$Inner.class。也就是说,内部类会被编译成独立的字节码文件。
内部类是一种编译器现象,与虚拟机无关。编译器将会把内部类翻译成用 $ 符号分隔外部类名与内部类名的常规类文件,而虚拟机则对此一无所知。
注意:必须先有外部类的对象才能生成内部类的对象,因为内部类需要访问外部类中的成员变量,成员变量必须实例化才有意义。
最新文章
- C#抽象方法和虚拟方法理解
- Python“Non-ASCII character 'xe5' in file”报错问题(转)
- 正则表达式:Pattern类与Matcher类详解
- linux命令:more
- nc:a test cmd for TCP HTTP
- Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)
- Warning: Using innodb_additional_mem_pool_size is DEPRECATED
- HOJ2275 Number sequence
- 80C51 K1控制D1发光
- Python env使用(virtualenv)
- Fragment已经被added了导致的异常。
- 关于C++中Hash的应用
- 自己实现一个jQuery插件
- pandas模块实现小爬虫功能-转载
- Apache Windows下Apache安装步骤
- 一、.NET Core MVC 项目结构模板
- .NET 黑魔法 - asp.net core 配置文件的";对象存储";
- 04 复制删除行为IDA反汇编
- PAT甲题题解-1065. A+B and C (64bit) (20)-大数溢出
- 115道Java经典面试题(面中率最高、最全)
热门文章
- MySQL table
- JavaScript数组遍历:for、foreach、for in、for of、$.each、$().each的区别
- ubuntu主板信息
- 数据结构之 图论---图的深度遍历( 输出dfs的先后遍历序列 )
- FZU1901 Period II —— KMP next数组
- jQuery插件之ajaxFileUpload API文档
- DateTime.Now.ToString(";yyyy/MM/dd";) 输出的结果是 2006-03-16(转)
- jqGrid 编辑完数据后能返回到当前位置的方法
- 关于 GraPhlAn 的孤独自学
- sublime text3安装配置c++环境(windows+ubuntu)