欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个java文件有多个类,编译后有几个class文件

程序员文章站 2022-04-14 10:45:09
...

说明:这是一个新的系列,定下一个目标,只要不忙,每天都会进行一次更新

验证

public class ClassD {
	ClassB b;

	public static void main(String[] args) {
		System.out.println("xxx");
	}
	class ClassE {
		ClassB b;
	}
}

class ClassF {
	ClassB b;
}
class ClassG {
	ClassB b;
}
abstract class ClassH {
	ClassB b;
}
interface ClassI {
}

上面的代码中一共有6个类,ClassD ClassE ClassF ClassG ClassH ClassI
ClassD 正常类
ClassE classD的内部类
ClassF 只是写在classD.java中的普通类
ClassG 只是写在classD.java中的普通类
ClassH 抽象类
ClassI 接口
编译之后,如图:
一个java文件有多个类,编译后有几个class文件

可以证明的是
如果再一个java文件中有多个类,除去内部类,剩下的每个普通类都会生成一个class文件

生成完的class文件:

public class ClassD {
    ClassB b;
    public ClassD() {
    }
    public static void main(String[] args) {
        System.out.println("xxx");
    }
    class ClassE {
        ClassB b;
        ClassE() {
        }
    }
}
class ClassF {
    ClassB b;
    ClassF() {
    }
}
class ClassG {
    ClassB b;
    ClassG() {
    }
}

abstract class ClassH {
    ClassB b;
    ClassH() {
    }
}
interface ClassI {
}

总结

如果一个java文件中有多个类,除去内部类,剩下的每个普通类都会生成一个class文件
如上图:一个java文件中有6个类生成了5个class文件,因为其中有个类是内部类,如果都是外部类的话,则会生成6个class文件