「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。
前言
大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍super和this关键字的作用和对比。
super和this关键字
1. this关键字
this实际上就是指向当前对象本身的一个指针,使用this即表示调用当前类本身的对象。
this的使用场景一般有以下三种:
-
访问本类的成员变量。
常在方法的参数名和类的属性名相同时调用。
【例如】
public class Test{ private String s; public void printString(String s){ System.out.println("我是传入的参数"+s); System.out.println("我是类的属性"+this.s); } } -
访问本类的成员方法。
访问本类的成员方法的使用和调用成员变量相同。
【格式】
this.printString(); -
调用本类的构造方法。
有时需要在一个构造方法内调用本类的另一个构造方法,这时就可以使用this关键字。
【格式】
this.类名(参数列表);当使用了this后,该构造方法就不会在默认调用无参的super方法。
2. super关键字
super实际上就是指向本类的父类对象的指针,super的使用场景一般也是以下三种:
-
调用父类的成员变量。
常用来调用被覆盖了的父类的成员变量。
【格式】
super.变量名; -
调用父类的成员方法。
常用来调用被重写了的父类的成员方法。
【格式】
super.方法名(); -
调用父类的构造方法。
super关键字的一个很重要的作用就是调用父类的构造方法。如果不显式声明,则会默认调用父类无参的构造方法。
3. this关键字和super关键字的异同
了解了this和super的使用,那对于他们的区别和联系就显而易见了,总结为以下几点:
- 指向对象不同,this指向当前对象,super指向当前对象的父类对象。
- 使用方式相同,都是通过super.(this.)对象名来使用或是super()(this())来调用方法。
- 使用规则相同,super()和this()均需放在第一行,即两者不能同时使用。
- 使用环境相同,super和this均不能使用在含有static关键字的范围内。
还有super独有的特点也需要我们了解:
- super如果在构造方法内没有显示声明并且没有this(),则默认调用无参的super()。
- super用来调用被覆盖或重写的属性或方法。
小结
以上就是关于this和super关键字的各自作用和总结对比,希望能加深读者的理解,如有不正之处,欢迎留言指正。