5.4 隐藏和封装 P130
    面向对象三大特征:封装 继承 多态
    访问控制符:
    private 当前类访问权限,只有在当前类里才能被使用
    default 包访问权限,只有在当前包里才能被使用
    protected 子类访问权限,在default基础上加上权限:允许其子类访问。
    通常该修饰符的出现,就是希望子类来重写该方法
    public 公共访问权限
    模块设计最求高内聚 低耦合
    package
    javac -d . hello.java 编译该文件时,会自动根据包名,建立对应的文件夹层次
    import
    JVM会默认导入java.lang下面的所有类,无需人工显式导入
    import static
    导入指定类的全部静态成员变量
    5.8继承和组合
    继承
    继承会破坏封装
    protected 可以被子类重写,但是不能被其他类自由访问
    尽量不要在父类构造器中调用将要被子类重写的方法
    想要把某些类 变成最终类,即不能当成父类—->final修饰
    Private修饰该类构造器,保证子类无法调用该类的构造器
    组合
    如果只是出于类复用的目的,那么并不一定使用继承,可以使用组合来实现
    继承关系表达一种 是 的关系
    组合关系表达一种 有 的关系
    5.9 初始化块
    初始化块的修饰符,只能有两种情况:没有、static,分别对应普通初始化块和静态初始化块
    初始化块的作用与构造器非常相似,但是初始化块总是在构造器之前执行
    普通初始化块:new对象时,对对象进行初始化
    静态初始化块:类初始化时执行,对类变量进行初始化(static)
    类初始化:见18章
    普通初始化块、声明实例变量的语句,都可以认为是对象的初始化代码
    静态初始化块、声明类变量的语句,都可以认为是类的初始化代码