你所不知道的java编程思想

本文探讨了Java中类定义的相关规则,特别是关于公共类(public class)的定义及其与文件名的关系。通过实例验证了即使缺少public修饰符,Java也能正确识别类,并且类名不必与文件名完全一致。

读thinking in java这本书的时候,有这么一句话“在编译单元的内部,可以有一个公共(public)类,它必须拥有与文件相同的名字”

有以下疑问:

  1. 在一个类中说可以有一个public类,那是不是也就是说可以没有呢?

抱着这个问题进行了以下的实验:(文件名是Test1.java)

class Test1 {
    public static void main(String[] args){
        if(args != null && args.length > 0){                                                        
            System.out.println(args.length);
            for(int i=0;i < args.length;i++){
                System.out.println("args["+i+"]:"+args[i]);
            }   
        }   
    }   
    public static void test(){
    }   
}
class Test3{
    public static void main(String[] args){
        if(args != null && args.length > 0){ 
            System.out.println(args.length);
            for(int i=0;i < args.length;i++){
                System.out.println("args["+i+"]:"+args[i]);
            }   
        }   
    }   
    public static void test(){
    }   
}

在终端下执行命令,没有任何错误,可见第一条确实可行的,一个类文件中确实不需要有public指定相关类名。

那随之而来的第二个问题就是,既然没有public修饰,那是不是里边的类名称也可以随意起呢,随之修改上述代码中Test1为Test2并进行测试,结果如下:

同样和上图的结果几乎一样,所以可以得出结论,在一个类文件中可以没有public修饰的类,此时类名称不必和文件名一样。

通过以上研究就可以明显看出来《thinking in java》中的一个错误,原话如下:

“例如,假定文件名是MyClass.java。它意味着在那个文件有一个、而且只能有一个public类。而且那个类的名字必须是MyClass(包括大小写形式)”

——取自5.1节

延伸了解:

以下列出类名的修饰符(取自百度)

public     公共类
default    默认类(默认的修饰符,只有在相同包中的对象才能使用这样的类)
abstract   抽象类 
final      不能被继承的类 
static     静态类 
private    只能修饰内部类,一般不推荐使用

  

 

转载于:https://www.cnblogs.com/everyday0error/p/5568449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值