继承extends
特点:
- 子类可以继承父类的属性和行为,但是子类不能继承父类的构造器
- Java是单继承模式:一个类只能继承一个直接父类
- Java不支持多继承,但是支持多层继承(在有二义性时,采用就近原则)
- Java中所有的类都是Object的子类
有争议的几个问题:
- 子类是否可以继承父类的私有成员?(这个问题有争议)
- 我认为可以的,只是不能直接访问
- 子类是否可以继承父类的静态方法成员?
- 子类可以直接使用父类的成员
关于调用
this.
调用本类super.
调用父类
重写:
- @Override重写注释
- 父类的私有方法不能重写
- 子类重写父类方法时,访问权限必须大于或等于父类(缺省<protected<public)
- 子类中默认调用父类的无参构造器,父类中也一定要有无参构造器
- 如果父类中没有无参构造器,那么可以调用有参构造器
- 还可以借用调用兄弟构造器
注意:this() super()都只能放在构造器的第一行,所以二者不能共存
在同一个构造器中,不同包下的类必须导包才能使用/相同包下的类可以直接访问
权限修饰符:
private > | 缺省 > | protected > | public |
---|---|---|---|
只在同一个类中 | 同一个包的类、同一个包下的类 | 其他包下的子类 | 都可以 |
贴心面经
- 父类的私有方法可以重写吗?
-不可以