美文网首页
《Java核心技术 卷1》 - 20240711

《Java核心技术 卷1》 - 20240711

作者: 转岗做JAVA | 来源:发表于2024-07-10 11:02 被阅读0次
    1. 编译器编译的时候不检查目录结构,但虚拟机会检查;

    如果不依赖其他包,即使目录结构和包名不匹配也可以编译成功,但如果不匹配的话,虚拟机会找不到这些类,导致无法运行;

    2. 不显示声明访问修饰符(public、private)的类和成员变量是包可访问的(默认包可访问);
    • private ---- 仅本类可以访问;
    • 默认 --- 本包可以访问,不需要修饰符;
    • protected --- 本包和所有子类可以访问;
    • public --- 外部也可访问;
    3.如果将一个类声明为final,只有其中的方法自动地成为final,而不包括字段;
    4. super并非和this引用是类似的概念;
    • super不是一个对象的引用,它只是指示编译器调用父类方法的特殊关键字,所以不能将super赋给另一个对象变量(this是可以的);
    • super有两个含义:调用父类的方法、调用父类的构造器;
    • this有两个含义:指示隐式参数的引用、调用该类的其他构造器;
    5. 最好通过调用getClass().getName()获得类名的字符串,不要将类名硬编码;
    6. 可以使用sealed class(密封类)控制哪些类可以继承它。
    public abstract sealed class JSONValue permits JSONArray, JSONNumber, JSONString, 
    JSONBoolean, JSONObject, JSONNull {
    // ...
    }
    
    • 不使用permits子句的话,它的所有直接子类都必须在同一个文件中声明;
    • 密封类的子类必须指定是sealed、final,还是允许继续派生子类(non-sealed);
    7. 接口中的所有方法都自动是public的;

    所以在实现接口方法时需要显示声明为public,否则就会编译报错:试图提供更严格的访问权限;

    8. 使用default修饰符标记接口提供的默认实现;
    public interface Collection {
        int size(); //an abstract method
        default boolean isEmpty() { return size() == 0; }
        ...
    }
    
    • 当某个接口默认方法与另一个接口方法相同时,两者的同一实现类必须重写该方法;
    • 类优先原则。即当默认方法和父类方法相同时,子类会优先继承父类实现;
    9. Object.clone提供的是浅拷贝,要想深拷贝,需要重新实现clone方法将子引用的可变对象也clone;
    • Date时可变的,LocalDate是不可变的(因为对其操作都会返回一个新的实例);

    相关文章

      网友评论

          本文标题:《Java核心技术 卷1》 - 20240711

          本文链接:https://www.haomeiwen.com/subject/totthjtx.html