Board logo

标题: 深入【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
ava.java.class





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0