this
Java里this是指向对象本身的一个指针,用法大体上可分为:
- 普通的直接引用
- 用来区分成员变量和形参
下面代码中Person构造方法和setAge方法中用来区分形参和成员变量 - 引用构造函数
下面代码中重载了只有一个String类型形参的Person构造函数,该构造函数中用this调用本类中有String和int类型形参的构造函数。
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name) {
this(name, 10);
}
}
super
super是指向父类的一个指针,这个父类指当前子类直接继承的父类,用法有:
- 引用父类的成员
- 用来区分子类和父类中同名的成员变量或方法
下面例子中子类Tiger重写了父类Cat的act()方法,两个同名的方法用super来区分 - 引用父类构造函数
子类的构造函数中,第一行使用super调用父类构造函数
public class Cat {
private double age;
private double weight;
public Cat(double age, double weight) {
this.age = age;
this.weight = weight;
}
public void act() {
System.out.println("喵喵叫");
}
}
public class Tiger extends Cat {
private double bodyLong;
public Tiger(double age, double weight, double bodyLong) {
super(age, weight);
this.bodyLong = bodyLong;
}
public void act() {
System.out.println("虎啸");
}
public void invoke() {
super.act();
act();
}
}