一 this关键字
this关键字主要有三个应用:
(1)this调用本类中的属性,也就是类中的成员变量;
(2)this调用本类中的其他方法;(3)返回对象的值
1引用成员变量
this关键字字其代表的就是对象中的成员变量或者方法。也就是说如果在某个变量前面加上一个this关键字,其指的就是这个对象的成员变量或者方法,而不是指成员方法的形式参数或者局部变量。this.name代表的就是对象中的成员变量,又叫做对象的属性,而后面的name则是方法的形式参数,代码this.name=name就是将形式参数的值传递给成员变量。
2调用类的构造方法
public class Student { //定义一个类,类的名字为student。
public Student() { //定义一个方法,名字与类相同故为构造方法 构造方法都不会有返回值,
this(“Hello!”);
}
public Student(String name) { //定义一个带形式参数的构造方法
}
}
//在构造方法中使this关键字表示调用类中的构造方法。如果一个类中有多个构造方法,因为其名字都相同,跟类名一致,都是通过形式参数来调用构造方法的。如上例中,this关键字后面加上了一个参数,那么就表示其引用的是带参数的构造方法。Java编译器会根据所传递的参数数量的不同,来判断该调用哪个构造方法。
不过如果要使用这种方式来调用构造方法的话,有一个语法上的限制。一般来说,利用this关键字来调用构造方法,只有在无参数构造方法中第一句使用this调用有参数的构造方法。
3 返回对象的值
this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用。如在代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如代码在上面student类中,那么代码代表的含义就是return student。可见,这个this关键字除了可以引用变量或者成员方法之外,还可以作为类的返回值,这才是this关键字最引人注意的地方。
二 super关键字
调用父类构造方法
package demo1;
public class Child extends Father{
int num;
public Child() {
super(30);
System.out.println("子类无参构造方法---");
}
public Child(int num) {
this.num = num;
System.out.println("子类中的有参的构造方法---"+num);
}
}
public class Father {
int num;
public Father() {
System.out.println("父类中的无参构造方法---");
}
public Father(int num){
System.out.println("父类中的有参的构造方法----"+num);
}
}
public class Test {
public static void main(String[] args) {
Child child = new Child();
}
}
注意:
1 super调用父类的构造方法,必须在构造方法的第一个
2 super必须只能出现在子类的方法或者构造方法中
3 super和this不能同时调用构造方法
Super和this的区别
1 代表的对象不同
This:本身调用者这个对象
Super:代表父类对象的引用
2 前提
This:没有继承也可使用
Super:只能在继承条件下才可以使用
3 构造方法
This();本类的构造
Super():父类的构造
原文:https://www.cnblogs.com/lp19990215/p/14289537.html