当子类重写父类时,子对象将无法直接访问重写父类的方法。在解决此问题的过程中,Java中提供了一个超级字来访问父级的成员,例如会员变量,成员资格方法和结构方法访问父类。LET在两种情况下学习超级关键字的特定用法。
(1)使用超级关键字调用父类的父级变量和成员资格方法,特定格式如下:
接下来,您可以学习如何使用超级单词来调用父级变量和成员资格方法,如何使用超级关键字来调用父类,如文件1.文件1 example03.java中所示
运行结果如图1所示。
图1运行结果
在文件1中,一个狗类继承了动物类,重写动物类的shout()方法,然后重新定义子类的名称属性。调用父级重写方法,在printName()方法中,“ super.name”可以访问父类的成员变量。从子类成功访问了父级的操作结果可以看到它类变量和成员的方法通过超级词的超级字。
(2)使用超级关键字调用父级构造方法。特定格式如下:
1 super([参数1,参数2 ...])下一个情况是通过案例学习的,如何使用超级关键字调用父类构造函数,如文件2所示。
文件2示例04.java
运行结果如图2所示。
超级关键字
图2运行结果
根据之前所学的知识,在文件1中创建狗类对象时,将调用狗类的结构方法。从操作的结果来看,可以看出,当狗类的结构方法称为dogs“)方法,以调用父级构造方法。通过超级必须位于子类结构方法的第一行,并且只能出现一次,否则该程序将在编译过程中报告错误。
对文件1的第11行代码发表评论,该程序将编译错误,如图3所示。
超级关键字
图3运行结果
从图3可以看出,程序编译有一个错误,显示“隐式超级构造函数动物()被固定在固定中。错误的原因是,将在子类的构造函数中调用父类的构造函数。这次,您可以指定哪种构造方法通过子构建构建器的超级字来调用父类。如果未指定,当未指定实例化的子类对象时,parent -class non -cucumber构造方法用于默认,并且在文件2中的文件2中,父母类动物仅定义构造函数,则只定义了构造函数方法,并且未定义非构造方法,因此当sub -class默认值调用parent -class non -constructor方法时,它将造成错误。
为了解决上述程序的汇编错误,可以在子类中显示父类中的现有构造方法,或在父类中定义了非参数结构方法。文件2中的动物类中的动物类已修改,并将非构造方法添加到父类中以求解上述编译误差,如文件3所示。
文件3示例05.java
运行结果如图4所示。
超级关键字
图4运行结果
从图4可以看出,子类在实例化期间默认情况下默认情况下呼叫默认值的构造函数。通过这种情况,也可以得出结论,当定义类时,如果没有特殊需求,则当参与方法是定义,尝试在类中定义非paradox构造变量,以避免该类被子。