资源说明:在Java编程语言中,`this` 和 `super` 是两个非常重要的关键字,它们在处理类的继承关系时起到关键作用。下面将详细解释这两个关键字的使用方法和它们的区别。
`this` 关键字:
1. **普通直接引用**:
`this` 在代码中可以直接用来引用当前对象的成员变量或方法,尤其是在方法内部,当局部变量和成员变量名字相同时,通过 `this` 可以明确区分。例如:
```java
class Person {
private int age = 10;
public Person() {
System.out.println("初始化年龄:" + age);
}
public int getAge(int age) {
this.age = age; // 指向成员变量age
return this.age;
}
}
```
2. **形参与成员名字重名**:
当类的方法参数与类的成员变量名称相同,`this` 用于区分它们。如上例的 `getAge` 方法中,`this.age` 代表的是实例变量,而非方法参数。
3. **引用构造函数**:
在同一个类的构造函数中,可以通过 `this` 引用其他构造函数。这允许你在多个构造函数之间共享代码,避免重复。例如:
```java
class Person {
public Person() {
this("未命名");
}
public Person(String name) {
// 共享代码
}
}
```
接下来,`super` 关键字:
1. **普通直接引用**:
类似于 `this`,`super` 关键字用于引用当前对象的父类。你可以使用 `super.xxx` 来访问父类的成员。比如:
```java
class Country {
String name;
void value() {
name = "China";
}
}
class City extends Country {
String name;
void value() {
name = "Shanghai";
super.value(); // 调用父类方法
System.out.println(name);
System.out.println(super.name);
}
}
```
2. **子类与父类成员重名**:
如果子类中有一个成员变量或方法与父类的同名,`super` 可以用来明确调用父类的成员。如上面的 `City` 类的 `value` 方法中,`super.value()` 调用了父类的 `value` 方法。
3. **引用构造函数**:
`super` 关键字还可以用来调用父类的构造函数,必须作为构造函数内的第一条语句。例如:
```java
class Person {
public Person() {
System.out.println("父类·无参数构造方法: A Person.");
}
public Person(String name) {
System.out.println("父类·含一个参数的构造方法: A person's name is " + name);
}
}
class Chinese extends Person {
public Chinese() {
super(); // 调用父类的无参数构造方法
System.out.println("子类·调用父类”无参数构造方法“: A chinese coder.");
}
public Chinese(String name) {
super(name); // 调用父类的含一个参数的构造方法
System.out.println("子类·调用父类”含一个参数的构造方法“: his name is " + name);
}
}
```
总结来说,`this` 关键字主要用于当前类的成员访问和构造函数调用,而 `super` 关键字则用于引用父类的成员和调用父类的构造函数。在编写面向对象程序时,理解并熟练运用这两个关键字,能够帮助我们更好地组织和管理代码,实现灵活的类继承关系。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。