Java中this和super的用法
一、作爲對象使用
1.this的用法
作爲當前類的一個對象使用,一般用於封裝中的getXxx()方法,調用當前類中的屬性
package program;
public class Person {
private String name;//姓名
private int age;//年齡
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.super的用法
作爲父類中的一個對象在子類中進行使用,調用父類中的getXxx()和setXxx()方法
“`
package program;
public class Student extends Person{
private String studentNo;//學號
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
}
public void test(){
super.setName("小明");
super.setAge(18);
this.setStudentNo("0144004");
String name = super.getName();
int age = super.getAge();
String studentNo = this.getStudentNo();
System.out.println("姓名: " + name + " 年齡 " + age + " 學號 " + studentNo);
}
public static void main(String[] args){
Student s = new Student();
s.test();
}
}
“`二、作爲構造方法使用
super(參數):調用父類中的某一個構造函數(應該爲構造函數中的第一條語句)。
this(參數):調用本類中另一種形式的構造函數(應該爲構造函數中的第一條語句)。
class Person {
public static void prt(String s) {
System.out.println(s);
}
Person() {
prt("父類·無參數構造方法: "+"A Person.");
}//構造方法(1)
Person(String name) {
prt("父類·含一個參數的構造方法: "+"A person's name is " + name);
}//構造方法(2)
}
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) {
this(name);// 調用具有相同形參的構造方法(3)
prt("子類:調用子類具有相同形參的構造方法:his age is " + age);
}
public static void main(String[] args) {
Chinese cn = new Chinese();
cn = new Chinese("codersai");
cn = new Chinese("codersai", 18);
}
}
運行結果:
父類·無參數構造方法: A Person.
子類·調用父類”無參數構造方法“: A chinese coder.
父類·含一個參數的構造方法: A person’s name is codersai
子類·調用父類”含一個參數的構造方法“: his name is codersai
父類·含一個參數的構造方法: A person’s name is codersai
子類·調用父類”含一個參數的構造方法“: his name is codersai
子類:調用子類具有相同形參的構造方法:his age is 18