this 指的是当前对象的引用,super 是当前对象的父对象的引用。下面先简单介绍一下 super 和 this 关键字的用法。
super 关键字的用法:
如果构造方法的第一行代码不是 this() 和 super(),则系统会默认添加 super()。
this 关键字的用法:
当局部变量和成员变量发生同名冲突时,使用this.
进行区分。
关于Java super和this关键字的异同,可简单总结为以下几条。
示例:
在 Animal 类和 Cat 类中分别定义了 public 类型的 name 属性和 private 类型的 name 属性,并且 Cat 类继承 Animal 类。那么,我们可以在 Cat 类中通过 super 关键字来访问父类 Animal 中的 name 属性,通过 this 关键字来访问本类中的 name 属性,如下面的代码:
// 父类Animal的定义
public class Animal {
public String name; // 动物名字
}
//子类Cat的定义
public class Cat extends Animal {
private String name; // 名字
public Cat(String aname, String dname) {
super.name = aname; // 通过super关键字来访问父类中的name属性
this.name = dname; // 通过this关键字来访问本类中的name属性
}
public String toString() {
return "我是" + super.name + ",我的名字叫" + this.name;
}
public static void main(String[] args) {
Animal cat = new Cat("动物", "喵星人");
System.out.println(cat);
}
}
上述代码演示了使用 super 关键字访问父类中与子类同名的成员变量 name,this 关键字访问本类的 name 变量。运行程序,输出结果如下:
我是动物,我的名字叫喵星人