java基础---------父类与子类构造器

一。父类构造器

1.1隐式调用和显式调用

    当调用某个类的构造器来创建java对象时,系统总会先调用最顶层父类的非静态初始化代码块进行初始化,接着会调用父类的一个或多个构造器执行初始化,最后返回本类的实例。

    调用父类哪个构造器执行初始化分为三类:

               1.子类构造器执行体的第一行代码使用super显式调用父类构造器,系统将根据super调用里传入的实参列表来 确定调用父类的哪个构造器。

2.子类构造器执行体的第一行代码使用this显式调用本类重载的构造器,系统将根据this调用里传入的实参列 表来 确定调用本类的另一个构造器。

3.子类构造器执行体中既没有super和this调用。系统将会在执行子类构造器之前,隐式调用父类无参数的构 造器。

注:super调用和this调用都只能在构造器中使用,而且super调用和this调用都必须作为构造器的第一行代码,因此构造器中的super调用和this调用最多只能使用其中之一,而且最多只能调用一次。

二。继承成员变量和方法的区别

java基础---------父类与子类构造器


1中系统将会自动进行向上转型来保证程序正确,直接通过db访问count 实例变量,输出的将是Base(声明时的类型)对象的count实例变量的值。通过db来调用display()方法,该方法将表现出Derived(运行时类型)对象的行为方式。

2的输出结果为2