因为构造方法不能被继承,所以在子类中调用父类构造方法只能通过super 关键字来实现。super 可以理解为父类在子类中的一个对象,使用super 可以调用父类对象的方法和属性。
super 关键字是在当前类中访问或调用父类对象的成员变量或方法,可作为当前类的父类对象来使用,它访问的是父类非private 变量和调用的是父类非private 方法。使用super 变量的语法格式如下:
通过super 关键字访问父类中的成员变量和调用父类中的方法,如例4.9 所示。
例4.9:
以上程序运行结果如下:
super 变量也是一个实例值,它用来在子类中一个成员方法内部指向当前类的父类的对象。由super 构成的语句实现的是一种操作,所以应该在方法体中完成。
super 关键字只能在构造方法或实例方法内使用,而在静态方法和静态代码块内不能使用(如静态的main()方法中)。
有继承关系的子类和父类都存在着变量、方法的隐藏和重写等现象,使用super 和this可分别操作隐藏和被隐藏、重写和被重写的变量和方法,super 实现了访问在父类中被隐藏的变量和调用被重写的方法。
通过super 访问在父类中被隐藏的变量和调用被重写的方法,如例4.10 所示。(www.daowen.com)
例4.10:
以上程序运行结果如下:
在子类中,通过superInfo()方法访问了父类被隐藏的str 变量和调用了父类被重写的print()方法。
super 可以在子类的构造方法中调用直接父类的构造方法,这也只能针对类的构造方法。在子类的构造方法体内使用,并且是构造方法体内的第一行语句。其语法格式如下:
super 可以调用直接父类的带参数和无参数的构造方法,通过super 调用直接父类构造方法,如例4.11 所示。
例4.11:
以上程序运行结果如下:
在一般情况下,当父类定义了构造方法,在继承的子类构造方法中应先调用父类的构造方法,从而实现父类对象的初始化。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。