标题:
深入【Java】底层细节知识点(10)Java编译一个.java文件生成的.class文件有多少
[打印本页]
作者:
look_w
时间:
2018-12-15 13:24
标题:
深入【Java】底层细节知识点(10)Java编译一个.java文件生成的.class文件有多少
一个.java文件中定义多个类,注意一下几点:
(1) public权限类只能有一个(可以一个都没有,但最多只有一个);
(2)这个.java文件名只能是public 权限的类的类名;
(3)倘若这个文件中没有public 类,则它的.java文件的名字是随便的一个类名;
(4)当用javac命令生成编译这个.java 文件的时候,则会针对每一个类生成一个.class文件;
(5)内部类也产生.class文件
(6)接口也产生.class文件
测试类:
package com.nuc;
public class Demo {
class a{ }
public static void main(String[] args) {
System.out.println("f");
}
}
class c{ }
interface a{ }
测试结果
这里写图片描述
可以看出,内部类的.class文件的命名格式为,外部类名$内部类名.class,外部类和内部类名使用符号$隔开
如果有两层内部类,如下图:
这里写图片描述
那么继承父类,实现接口的情况呢?
图一是,接口和父类,Demo类在同一包下测试的结果,编译Demo产生的class文件
图二是,不在同一包下的测试结果,Demo类编译时的class文件
那么匿名内部类的情况呢?
匿名内部类的创建格式:
new 父类构造器(参数列表)|实现接口()
{
//匿名内部类的类体部分
}
结果:
这里写图片描述
可见,匿名内部类,也生成class文件,由于匿名内部类没有名字,所以就按数字来命名,其规则是按照匿名内部类的顺序递增的。命名格式和内部类相似,名字换成数字即可
J
a
v
a
编
译
一
个
.
j
a
v
a
文
件
生
成
的
.
c
l
a
s
s
文
件
有
多
少
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0