资源说明: Java this 和 super 代码实例及使用方法总结
Java 编程语言中,this 和 super 是两个非常重要的关键字,这两个关键字在面向对象编程中扮演着非常重要的角色。下面我们将详细介绍 Java 中 this 和 super 的用法。
一、this 关键字
this 关键字在 Java 中是指向当前对象本身的指针,可以理解为指向对象本身的一个指针。this 的用法在 Java 中大体可以分为三种:
1. 普通的直接引用:this 相当于是指向当前对象本身。
2. 形参与成员名字重名,用 this 来区分:在方法中,如果形参和成员变量同名,可以使用 this 来区分。
例如:
```java
package com.demo;
public class Person {
private int age = 10;
public Person(){
System.out.println("初始化年龄:"+age);
}
public int GetAge(int age){
this.age = age;
return this.age;
}
}
package com.demo;
public class Test1 {
public static void main(String[] args) {
Person Harry = new Person();
System.out.println("Harry's age is "+Harry.GetAge(12));
}
}
```
在上面的代码中,我们使用 this 来区分形参和成员变量。
二、super 关键字
super 关键字可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。super 也有三种用法:
1. 普通的直接引用:super 相当于是指向当前对象的父类,这样就可以用 super.xxx 来引用父类的成员。
2. 子类中的成员变量或方法与父类中的成员变量或方法同名:在子类中,如果成员变量或方法与父类中的成员变量或方法同名,可以使用 super 来调用父类的成员。
例如:
```java
package com.demo;
public class Country {
String name;
void value() {
name = "China";
}
}
package com.demo;
public class City extends Country{
String name;
void value() {
name = "Shanghai";
super.value(); // 调用父类的方法
System.out.println(name);
System.out.println(super.name);
}
public static void main(String[] args) {
City c = new City();
c.value();
}
}
```
在上面的代码中,我们使用 super 来调用父类的方法和变量。
3. 引用构造函数:super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
例如:
```java
package com.demo.test;
public class Person {
public static void prt(String s) {
System.out.println(s);
}
Person() {
prt("父类·无参数构造方法: " + "A Person.");
}
Person(String name) {
prt("父类·含一个参数的构造方法: " + "A person's name is " + name);
}
}
package com.demo.test;
public class Chinese extends Person {
Chinese() {
super(); // 调用父类构造方法(1)
prt("子类·调用父类“无参数构造方法“: " + "A chinese coder.");
}
Chinese(String name) {
super(name); // 调用父类具有相同形参的构造方法(2)
prt("子类·调用父类”含一个参数的构造方法“: " + "his name is " + name);
}
Chinese(String name, int age) {
// ...
}
}
```
在上面的代码中,我们使用 super 来调用父类的构造函数。
this 和 super 是 Java 中两个非常重要的关键字,它们都是指向对象本身或父类对象的指针。通过使用 this 和 super,我们可以更方便地访问和操作对象的成员变量和方法。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。