(1) 每一個類的每一個非靜態方法(沒有被static修飾)都會隱含一個this關鍵字,它指向調用這個方法的對象;當在方法中使用本類屬性時,都會隱含地使用this關鍵字,固然也能夠明確使用。java
this能夠當作是一個變量,它的值就是當前對象的引用函數
this關鍵字只能在方法內部使用,表示對「調用方法的那個對象」的引用若是是在同一類中調用另一個方法,則能夠不用寫this,直接調用this
(2) 爲了區分屬性和局部變量,能夠經過this關鍵字來調用對象
(3) this關鍵字的用法編譯器
*當類中非靜態方法的參數名與類的某個成員變量名相同時,爲了不參數做用範圍覆蓋了成員變量的做用範圍,必須明確使用this關鍵字來指定編譯
*若是某個構造方法的第一條語句具備形式this(...),那麼這個構造方法將調用本類中的其餘構造方法class
*若是某個方法須要傳入當前對象,則能夠將當前的對象做爲參數傳遞給它
變量
public class pra {
private String name;
private String sex;
private Integer age; 構造函數
public pra(String name, String sex, Integer age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
} 引用
public pra() {
this("by", "女", 15); //調到了有參的構造方法
}
}
super表明了父類空間的引用
(1) super的做用:
*子父類存在着同名的成員時,在子類中默認時訪問子類的成員,能夠經過super關鍵字指定訪問父類的成員
*建立子類對象時,默認會先調用父類無參的構造方法,能夠經過super關鍵字指定調用父類的構造方法
(2)super的用法
super能夠用來引用直接父類的實例變量。
super能夠用來調用直接父類方法。
super()能夠用於調用直接父類構造函數
class C {
String name = "A";
public void work() {
System.out.println("A工做!");
}
}
class B extends C {
String name = "B";
public B() {
super(); // 調用父類構造方法
}
public void work() {
System.out.println("B工做!");
}
public void pint() {
System.out.println(name);
System.out.println(super.name); // 調用父類的實例變量
super.work(); // 調用父類的方法
}
}
public class A {
public static void main(String[] args) {
B b = new B();
b.pint();
}
}
(3) 注意事項:
*若是在子類的構造方法上沒有指定調用父類的構造方法,java編譯器會在子類的構造器裏面加上super()語句
* super關鍵字調用父類的構造函數時,該語句必需要是子類構造函數的第一個語句
*super和this不能同時出如今同一個構造函數中調用其餘的構造函數,由於兩個語句都要是第一個語句