JAVA 的继承-子类与父类之间的复杂关系

调用子类,先进行父类的参数定义和构造器构造,再进行子类的参数定义和构造器构造;
如果子类构造器中没有 super() 语句,或 super() 语句中不含参数;会去寻找父类当中不含参数的构造器;有参数时,寻找有对应参数的父类构造器;

父类中的函数 protected 参数声明,尽量少用,可以通过父类构造函数使用父类中 private 参数;

转型

向上转型

父类定义了通用的属性和方法;不同的子类继承后可以直接使用;不用重复写。
概念:子类的对象当做父类的对象用
Father f = new Child()
向上造型是默认的,不需要运算符
向上造型总是安全的

子类的变量不能接收父类的对象实例
父类的变量能接收子类的对象实例

向上造型时,子类重写的父类方法的权限要大于等于父类方法;返回类型需一致。

向下转型

父类对象想使用子类特有的方法时
向下造型一般来说是不安全的;但是通过声明造型,可以强制通过
Child c = (Child)f

instanceof

向下转型时,若父类对象不是子类对象的实例,就会发生 ClassCastException 异常;所以在转型时,需要使用 关键字 instanceof 来判断。
child instance Father
child : 子类对象
Father: 父类
返回值: 布尔

你可能感兴趣的:(JAVA 的继承-子类与父类之间的复杂关系)