1.子类可以继承父类的哪些数据域和方法
子类继承它的父类中所有可访问的数据域和方法
先说实例数据域:
- private修饰的实例数据域不能被子类继承,但是子类可以调用父类提供的访问器和修改器进行访问和修改
- 无修饰符的实例数据域可以被子类继承
- protected修饰的实例数据域可以被子类继承
- public修饰的实例数据域可以被子类继承
再说静态数据域:
-
private修饰的静态数据域不能被子类继承,但是子类可以调用父类提供的访问器和修改器进行访问和修改
-
无修饰符的静态数据域可以被子类继承
-
protected修饰的静态数据域可以被子类继承
-
public修饰的静态数据域可以被子类继承
先说实例方法
- private修饰的实例方法不能被子类继承
- 无修饰符的实例方法可以被子类继承
- protected修饰的实例方法可以被子类继承
- public修饰的实例方法可以被子类继承
再说静态方法
- private修饰的静态方法不能被子类继承
- 无修饰符的静态方可可以被子类继承
- protected修饰的静态方法可以被子类继承
- public修饰的静态方法可以被子类继承
最后说构造方法
- 父类的构造方法不会被子类继承,但是可以通过super关键字进行调用
综上,归根结底还是数据域和方法的可见性修饰符问题
2.子类可以重写父类的哪些方法
先说实例方法
- private修饰的实例方法不能被重写,如果子类中定义的方法在父类中是私有的,那么这两个方法完全没有关系
- 无修饰符的实例方法可以被重写
- protected修饰的实例方法可以被重写
- public修饰的实例方法可以被重写
再说静态方法
-
private修饰的静态方法不能被重写
-
无修饰符的静态方法不能被重写
-
protected修饰的静态方法不能被重写
-
public修饰的静态方法不能被重写
-
如果父类中的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏,可以使用"父类名.静态方法名"调用隐藏的静态方法。但是不能通过这样的方式去访问private修饰的静态方法,因为private修饰的只能在本类中访问