this
this关键字在java中是对正在调用该方法的当前对象的引用。简单一点表达就是代表当前创建的对象的引用。
我们来看看具体的this的使用和理解:
- 消除歧义,区分同名的成员变量和形参
public class ThisUsage {
private int age;
private String name;
public ThisUsage(String name){
this.name = name;
}
}
public class ThisUsage {
private int age;
private String name;
public ThisUsage(int n){
age = n;
}
}
第一个代码块中,方法的参数和成员变量同名,同名的情况下,成员变量会被屏蔽这时需要访问成员变量的话需要"this.变量名"的方式进行引用。这样消除了对变量的歧义很好的区分了成员变量和方法参数。在第二个代码块我们可以看到当方法参数和成员变量不同名的时候可以直接用变量名不用"this"。
- 引用同一类的构造函数
在构造函数中我们可以使用this来调用同一类的其他构造函数
最常见例子是从参数化构造函数中调用其他构造函数:
public ThisUsage(int age,String name){
this(age);
}
还可以在无参数构造函数中调用其他构造函数并传递参数:
public ThisUsage(){
this(15,"Jon");
}
注意:只能在类的构造方法中用且只能用在构造方法的第一行。
- 内部类中this关键字
内部类中的this仍旧代表内部类所在类,即外部类对象。可以使用它从内部类访问外部类实例
public class InnerUasge{
boolean isInnerClass = true;
public InnerUasge() {
ThisUsage thisKeyword = ThisUsage.this;
String outerString = ThisUsage.this.name;
}
}
以上三种用法都表示了this指向对象本身。
super
- 可以使用super调用父类构造函数,且放在构造函数的第一句。
public class SuperUsageSub extends SuperUsage{
public SuperUsageSub(String name){
super(name);
}
SuperUsageSub superSub = new SuperUsageSub("Micheal");
}
2.访问父类变量
父类中创建一个名为address的变量:
public class SuperUsage {
public String address = "Wuhan";
}
子类中创建一个同名变量:
String address = "Xian";
public void getParentAddress() {
System.out.println(super.address);
}
通过打印的结果可以看到super在这里的用法。这里的super表示的是父类对象。
网友评论