this:

this理解为:当前对象 或 当前正在创建的对象

可以调用的结构:属性、方法;构造器

this调用属性、方法:

先了解一下形参:

形参的意义就是给属性赋值,我们是要给同名的属性赋值,这时候我们就把形参名和属性的名字写成一样,这样我们就知道我们传入的形参就是要给我们同名的属性去赋值的.

在类的方法中,我们可以使用”this.属性”或”this.方法”的方式,调用当前对象属性或方法。但是,

通常情况下,我们都择省略”this.”。特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用”this.变量”的方式,表明此变量是属性,而非形参。

举例:我们声明一个类叫鞋类,给它提供私有的属性和get/set方法和构造器:

先来看没有加this关键字的情况:

结果:

然后我们给鞋属性加上this关键字:

控制台输出的就是我们给鞋设置的名字和编号:

在类的构造器中,我们可以使用”this.属性”或”this.方法”的方式,调用当前正在创建的对象属性或方法。但是,通常情况下,我们都择省略”this.”。特殊情况下,如果构造器的形参和类的属性同名时,我们必须显式的使用”this.变量”的方式,表明此变量是属性,而非形参。

同样的我们的构造器也是一样:如果有参构造器没有加给属性加this关键字:控制台输出结果也和上面一样

加上之后:

“this.方法”举例:我们声明两个方法show和sale方法来举例体会一下this的作用:代码参照上面:

s.show();的结果:

this调用构造器:

① 我们在类的构造器中,可以显式的使用”this(形参列表)”方式,调用本类中指定的其他构造器

② 构造器中不能通过”this(形参列表)“方式调用自己

③ 如果一个类中有n个构造器,则最多有 n – 1构造器中使用了”this(形参列表)”

④ 规定:”this(形参列表)“必须声明在当前构造器的首行

⑤ 构造器内部,最多只能声明一个”this(形参列表)”,用来调用其他的构造器

举例:我们还是写一个shoes类 提供私有属性和get/set方法并提供三个构造器:

运行结果:

super:

super 关键字可以理解为:父类的

可以用来调用的结构:

属性、方法、构造器

super调用属性、方法:

我们可以在子类的方法或构造器中。通过使用”super.属性”或”super.方法”的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略”super.”

①特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用”super.属性”的方式,表明调用的是父类中声明的属性。

② 特殊情况:当子类重写了父类中的方法以后,我们想在子类的方法中调用父类中被重写的方法时,则必须显式的使用”super.方法”的方式,表明调用的是父类中被重写的方法(也就是父类中原本的方法)。

举例两种特殊情况:在子类的方法中调用父类中同名的属性和方法:

创建一个人类,一个学生类,学生类继承人类,和一个测试类

输出结果:

super调用构造器:

我们可以在子类的构造器中显式的使用”super(形参列表)”的方式,调用父类中声明的指定的构造器

注意:

“super(形参列表)”的使用,必须声明在子类构造器的首行!我们在类的构造器中,针对于”this(形参列表)”或”super(形参列表)”只能二者取其一,不能同时出现在构造器的首行,没显式的声明”this(形参列表)“或”super(形参列表)”,则默认调用的是父类中空参的构造器:super()在类的多个构造器中,至少一个类的构造器中使用了”super(形参列表)”,调用父类中的构造器

举例:还是用上面的例子,我们在人类和学生类中添加构造器:

在子类构造器2中调用父类已有的有参构造器:

然后测试:实例化学生类的对象并给属性赋值,调learn方法:

输出结果:

this与super的区别总结:

①代表事物不同

​ this表示当前所属函数的调用者对象

​ super表示调用父类的结构(属性,方法,构造器)

②使用前提不同

​ super必须要有继承关系才能使用

​ this不需要继承关系也能使用

③调用的构造器不同

​ super:调用父类的构造器

​ this:调用当前类(本类)的构造器

说明:

在栈空间中存放的是对象的引用也就是对象名指向堆空间中new的对象,在堆空间中子类和父类的属性都会有,this和super都可以通过栈空间的引用指向堆空间来调用具体的属性.

继续加油~~冲冲冲! ! !

总结

到此这篇关于java关键字this和super的区别和理解的文章就介绍到这了,更多相关java关键字this和super区别内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!