很水,就这样~
# Java 中的 this 关键字
Java 中 this 是自身的对象,或理解为指向对象本身的指针。
# 区分变量和形参
this 的第一个常见用法是用来区分成员变量和形参。例如下面这个例子:
class Person{ | |
private int age = 0; | |
public Person(); | |
public void setAge(int age){ | |
this.age = age; | |
} | |
} |
在此例中, this.age
指代成员变量,而后面的 age
指代形参。
# 引用自身的构造函数
this 的第二个用法是引用自身的构造函数。
class Person{ | |
private int age = 0; | |
private String name = null; | |
public Person(); | |
public Person(int age){ | |
this.age = age; | |
} | |
public Person(String name){ | |
this.name = name; | |
} | |
public Person(int age, String name){ | |
this.age = age; | |
this(name); | |
} | |
} |
对于不同的参数,往往需要不同的构造函数。如果希望利用已有的构造函数,则可以采用 this
,Java 会自动匹配参数正确的构造函数。
# 引用自身的其他函数
如果一个类希望引用自身的其他函数,常见的方法是将函数声明为 static
或创建实例。如果想要动态地引用,则可以采用 this
自身的实例进行引用。
class Person{ | |
private int age = 0; | |
private String name = null; | |
public Person(); | |
public Person(int age){ | |
this.age = age; | |
} | |
public void setAge(int age){ | |
this.age = age; | |
} | |
public void setName(String name){ | |
this.name = name; | |
} | |
public void setInfo(int age, String name){ | |
this.setAge(age); | |
this.setName(name); | |
} | |
} |
# Java 中的 super 关键字
super 与 this 的思路相近。super 是指向自身父类的指针。因此,可以采用 super 引用父类的同名成员,也可以用 super 引用父类对应的构造函数。例如:
class Person { | |
Person() { | |
System.out.println("父类·无参数构造方法: "+"A Person."); | |
}// 构造方法 (1) | |
Person(String name) { | |
System.out.println("父类·含一个参数的构造方法: "+"A person's name is " + name); | |
}// 构造方法 (2) | |
} | |
public class Chinese extends Person { | |
Chinese() { | |
super(); // 调用父类构造方法(1) | |
System.out.println("子类·调用父类"无参数构造方法": "+"A chinese coder."); | |
} | |
Chinese(String name) { | |
super(name);// 调用父类具有相同形参的构造方法(2) | |
System.out.println("子类·调用父类"含一个参数的构造方法": "+"his name is " + name); | |
} | |
Chinese(String name, int age) { | |
this(name);// 调用具有相同形参的构造方法(3) | |
System.out.println("子类:调用子类具有相同形参的构造方法:his age is " + age); | |
} | |
public static void main(String[] args) { | |
Chinese cn = new Chinese(); | |
cn = new Chinese("codersai"); | |
cn = new Chinese("codersai", 18); | |
} | |
} |
# Reference
- 菜鸟教程 - Java 中 this 和 super 的用法总结
- CSDN-java 中 this 详解