继承
一个子类只能有一个父类,一个父类可以有多个子类
子类继承了父类所有的成员(成员变量和方法)。子类也继承了父类的私有成员,但不可以直接访问这些继承过来的私有成员。如果一个父类的构造方法都是private的,那么就不能再创建它的子类了。
子类的构造过程必须调用父类的构造方法,且必须写在第一行。
调用父类的构造方法使用super()。调用自身的构造方法使用this()。
如果子类的构造方法没有显式调用父类的构造方法,那么默认调用父类无参的构造方法。
方法重写的两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
一个基类的引用不可以访问其子类中新添加的成员(属性和方法)。
代码及内存图
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
class Father { int value = 100; void method() { System.out.println("父类方法执行"); } } class Son extends Father { int value = 50; void method() { super.method(); System.out.println(super.value); System.out.println(value); } } public class Demo { public static void main(String[] args) { Father f = new Son(); System.out.println("属性重写访问的还是父类的属性"+f.value); f.method(); } }
内存图