时间:2021-05-20
构造方法中的super关键字
在Java子类的构造方法中可以通过super关键字来调用父类的构造方法。其用法为:
1) super(); 访问父类中的无参构造函数
2) super (paras…); 访问父类中的成员函数yyy
super()来调用父类无参的构造方法,但即使不使用super(),默认也会调用父类无参的构造方法。父类无参的构造方法可以是自定义的无参构造方法,也可以是编译器自动生成的默认构造方法。但如果父类中定义了有参的构造方法,但没有定义无参的构造方法,这时编译器不会生成默认构造函数,也就不能通过super()来调用构造方法。此外,如果父类中定义了private的无参构造方法,也不同通过super()来调用。
super(paras…);用来调用父类中某个有参的构造方法。
super调用父类的构造方法,必须放在子类构造方法的第一行中执行。如果调用的有参的父类构造方法,在super的参数中不能用子类中的非static成员变量(可以使用static成员变量,因为static成员变量在构造方法执行前就已经初始化),也不能使用this或super的相关调用。例如super(super.getClass().getName());
在构造方法中也可以使用super关键字来访问父类中的成员变量和成员函数。其用法和非构造方法中的super关键字用法相同。
非构造方法中的super关键字
在Java子类中可以通过通过super关键字来调用父类中的成员变量和方法。其用法是。
1) super.xxx; 访问父类中的成员变量xxx
2) super.yyy(paras…); 访问父类中的成员函数yyy
super关键字访问父类的成员变量和成员函数时不能越过访问权限的控制,不能访问父类中private的成员变量和方法。例如:
class a { private int mNum = 0;}class b extends a { public void setNum(int i) { super.mNum = i; //错误,不能访问父类的private成员 }}在有多层的继承关系时,super调用只能自身父类的成员变量和方法,不能越过父类直接调用父类的父类中的成员变量或方法。当然如果父类的父类中的成员变量或方法被父类继承,那么是可以通过super来调用该成员变量和方法的,但这时实际调用的是父类中的成员变量和方法。例如:
class a { protected int mNum = 0; public void setNum(int i) { mNum = i; }}class b extends a { public void setNum(int i) { mNum = i * i; }}class c extends b { public void setNum(int i) { super.setNum(i); //调用的是b中的setNum()方法 super.super.setNum(i); //错误,不支持的用法 }}class a { protected int mNum = 0; public void setNum(int i) { mNum = i; }}class b extends a {}class c extends b { public void setNum(int i) { super.setNum(i); //正确,虽然b中没有实现setNum(),但b中继承了a的setNum()函数, //c中调用super.setNum()调用的是b的setNum()函数,可以执行。 }}如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了java中super关键字的用法。分享给大家供大家参考。具体方法分析如下:super关键字:在java中使用super来引用基类的成分。程序代码如
java中this与super关键字的使用方法这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~thisth
Javathis关键字的使用方法详解构造方法中的this关键字构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名
javafinal关键字详解:前言:Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方
函数也称为方法!继承:在java中使用extends关键字来表示继承关系。super用来继承父类方法和参数。继承就是子类继承父类的特征和行为,使得子类具有父类相