irpas技术客

Java基础——this和super关键字_守夜人st

irpas 589

? ?

活动地址:CSDN21天学习挑战赛

Java基础——this和super this关键字 this能出现在实例方法和构造方法中this的语法是:“this.”,“this()”this不能使用在静态方法中this.大部分情况下是可以省略的this.什么时候不可以省略?

在区分局部变量和实例变量的时候不能省略

public void setName(String name){ this.name = name; }

this()只能出现在构造方法的第一行,通过当前构造方法调用其他构造方法,实现代码复用。

super关键字 super能出现在实例方法和构造方法中super的语法是:“super.”,“super()”super不能使用在静态方法中super.大部分情况下是可以省略的super.什么时候不可以省略?

父类和子类有相同的属性或方法时,想通过子类访问“父类特征”时,super.不能省略。

super()只能出现在构造方法的第一行,通过当前构造方法调用其他构造方法,目的是创建子类对象的时候,先初始化父类型特征。

重要结论:

既没有this()又没有super()的话,默认会有一个super();

表示通过当前子类的构造方法调用父类的无参构造方法。

所以必须保证父类的无参构造方法是存在的!!!

this()和super()不能共存,它们都是只能出现在构造方法的第一行!!!

一个实例程序带你了解this和super

package com.shouyerenst.OOP; public class SuperTest{ public static void main (String[] args){ new C(); } } class A{ public A(){ //这里默认有super(); System.out.println("1"); } } class B extends A{ public B() { //这里默认有super(); System.out.println("2"); } public B(String name){ //这里默认有super(); System.out.println("3"); } } class C extends B{ public C() { this("zhangsan"); System.out.println("4"); } public C(String name) { this(name,20); System.out.println("5"); } public C(String name,int i) { super(name); System.out.println("6"); } }

这里大家可以好好思考一下输出结果是什么

13654

总结

super的使用:

? super.属性名 【访问父类的属性】

? super.方法名 【访问父类的方法】

? super(实参) 【调用父类的构造方法】

?

感觉不错的话,动手点个赞吧!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。