类的继承**

    • 子类继承父类可访问的数据域和方法域,这种继承是复制还是共享,取决于是实例变量(方法)还是静态变量(方法)。

      复制的意思也就是说,子类继承了父类的某数据域i,那么子类修改自身的这个i不影响父类的那个i。

    • super的两种必需的使用场景

      • 显示调用父类的构造方法:必须位于子类构造方法体的首行
      • 在重写中需要调用父类的普通方法时
    • 多态:使用父类对象的地方都可以使用子类对象
    • 方法的匹配和方法的动态绑定

      • 方法匹配:在编译时,根据声明类型来确定从哪条匹配链;

        如果子类型有该方法,而声明类型没有,那么会产生编译错误。

      • 方法绑定:在运行时,根据实际类型来确定从哪里开始往父类搜索执行的方法。如果执行的方法调用了其他方法,并且这个方法依然有继承链,那么搜索开始的位置依然从那个实际类型开始。

    抽象类
    当一个父类描述了其所有子类共有的某些行为特征,但这些行为特征只能针对子类本身来具体地实现,那么父类所描述的这些行为特征就称为抽象方法

    • 有抽象方法的类必须被声明为抽象类;没有抽象方法的类可以被声明为抽象类。
    • 抽象类不能被实例化,但它仍然可以作为一种数据类型。
    • 抽象类的抽象方法只能被声明,不能被定义。
    • 抽象类的构造方法只能为protected:因为抽象类必须被子类加以实现,同时又不能被外部调用以创造该抽象类的实例。
    • 抽象类和抽象方法,使得在使用这些抽象方法时可以不用区分到底是哪一子类对象。(求面积这一方法就不用区分矩形或三角形)
    • 抽象子类若不实现所有的抽象方法,那么该子类也必须为抽象类
    • 抽象方法是非静态的,从而防止外部从抽象类来调用抽象方法。

    接口
    接口中只有三种方法:public abstract ``public static public default ,接口数据域均为 public static final
    为什么均为public?