在Java中,允许子类复用父类的字段和方法,用extends关键字建立继承关系。
Java只支持单继承,也就是一个类最多只能有一个直接父类。
子类可以继承父类的public和protected成员;对于父类的private成员,子类只能通过父类提供的public/protected方法来间接地访问。
子类的构造方法执行之前必须先调用父类的构造方法。
如果父类存在无参数的构造方法,则编译器会自动加上super();
如果父类不存在无参数的构造方法,只存在带参数的构造方法,则子类必须显示地调用super(参数),因为编译器默认插入的是无参的super()方法,会导致编译报错。
继承在带来代码复用的同时也带来了紧耦合问题。
子类在重写父类的方法时,只能放大或者保持方法的访问权限,不能缩小访问权限。
也就是说,
父类如果是public方法,则子类只能是public;
父类如果是protected方法,则子类可以是protected或者public。
因为在父类引用指向子类对象时,调用方是期望能访问到这个方法的,如果子类缩小了这个权限,就会导致调用方无法访问。