this關鍵字和super關鍵字
阿新 • • 發佈:2018-06-11
對象 -s 命名沖突 編譯錯誤 ext ack ret 屬性 ava
一、this
Java中為了解決變量的命名沖突和不確定性問題,引入了關鍵字this。this代表當前類的一個實例,它經常出現在方法和構造方法中,具體使用情況有以下三種:
1,返回調用當前方法的對象的引用。
package test;
public class Increase {
private int i = 0;
public Increase operation(){
i++;
return this;
}
public void show(){
System.out.println(i);
}
public static void main(String[] args) {
Increase in = new Increase();
in.show();
in.operation().operation().show();;
}
}
上面的this表示的Increase的實例,也就是in。
2,在構造方法中調用當前類的其它構造方法。
package test;
public class Person {
private String name;
private int age;
private String sex;
Person(){
sex = "male";
}
Person(String _name){
this();//這個必須放在構造方法體的開頭
name = _name;
}
Person(String _name,int _age){
this(_name);
age = _age;
}
}
上面的Person類有三個構造方法,分別為無參的、一個參數的和兩個參數的。使用this提高了代碼的重復利用。
3,當方法的參數名和成員變量名相相同時,用於區分參數名和成員變量名。
public class Person {
private String name;
private int age;
private String sex;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
}
二、super
super代表父類的實例,在子類中,使用super可以調用其父類的方法、屬性和構造方法。
1,調用父類的構造方法
public class Student extends Person {
private String stuNo;
private String grade;
public Student(){
super();
}
public Student(String name ,String stuNo,String grade){
super(name);
this.stuNo = stuNo;
this.grade = grade;
}
}
調用父類無參的構造函數和單參的構造函數。ps:若父類中無對應的構造函數,將會出現編譯錯誤。
2,調用父類的屬性和方法
public class Student extends Person {
private String stuNo;
private String grade;
public Student(){
super();
}
public Student(String name ,String stuNo,String grade){
super(name);
this.stuNo = stuNo;
this.grade = grade;
}
public void show(){
super.show();//調用父類的函數
System.out.println(stuNo);
System.out.println(grade);
}
}
this關鍵字和super關鍵字