Java super关键字的使用方法详解

2025-05-29 0 41

构造方法中的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的成员变量和方法。例如:

?

1

2

3

4

5

6

7

8
class a {

private int mNum = 0;

}

class b extends a {

public void setNum(int i) {

super.mNum = i; //错误,不能访问父类的private成员

}

}

在有多层的继承关系时,super调用只能自身父类的成员变量和方法,不能越过父类直接调用父类的父类中的成员变量或方法。当然如果父类的父类中的成员变量或方法被父类继承,那么是可以通过super来调用该成员变量和方法的,但这时实际调用的是父类中的成员变量和方法。例如:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
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); //错误,不支持的用法

}

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
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()函数,可以执行。

}

}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/ccpat/article/details/44491105

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java super关键字的使用方法详解 https://www.kuaiidc.com/114609.html

相关文章

发表评论
暂无评论