一个.java文件中可以有几个同级类

看到学弟发的一个动态,仔细了解了一下

一个.java文件中可以有几个同级类?

  1. 在一个.java文件中可以有多个同级类(和public一样的位置,注意不是内部类).其修饰符只可以public/abstract/final/和无修饰符,不能是其他的protected/private等修饰符。所以protected类虽然可以在包内访问,但是也必须定义在另外类里面,protected主要是保护子类访问,因此个人觉得其他类就尽量不要使用,便于规范;
    不使用任何修饰符声明的属性和方法,对同一个包内的类是可见的。
    接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。
    public:跨包可访问
    无修饰符:包内可访问

  2. public修饰的只能有一个,且必须要与文件名相同;若没有public的则可与文件名不同。注意不是内部类

  3. 该文件同级的类之间可以互相调用,但是除了public的类,其他不能够在其他文件调用。

  4. 在一个.java文件中由类/Enum/接口/Anontation其中至少一个类型组成。单独一个方法/变量不能独自存在与文件中,所以公用方法的封装也是做成类方法。原因是java是类加载机制,需要编译一个java文件成多个class文件,当类来使用。java文件的命名也是按照类名命名。也说明java面向对象的思想体现非常充分,不像C/C++可以单独一个方法一个文件。详细见:http://www.weixueyuan.net/view/6311.html

  5. 编译一个java文件会生成多个class文件


假设Test.java文件中:
public class Test{}
class Test2{}
abstract class Test3{}
final class Test6{}

编译后:Test.class Test2.class Test3.class Test6.class

参考:http://www.cnblogs.com/muffe/p/3539551.html

原文地址:https://www.cnblogs.com/sev7en-/p/6880666.html