1、java提供了一個this關鍵字,this關鍵字總是指向調用該方法的對象。根據this出現位置的不同,this作為對象的默認引用有兩種情形。
a)、構造器中引用該構造器正在初始化的對象。(this總是引用該構造器正在初始化的對象。比如,局部變量和全局變量重名,this總是引用構造器的局部變量)。
b)、在方法中引用調用該方法的對象。
this關鍵字最大的作用就是讓類中一個方法,訪問該類的另一個方法或者實例變量。(java允許對象的一個成員直接調用另一個成員,可以省略this前綴。大部分時候,一
個方法訪問該類中的定義的其他方法、成員變量時加不加this前綴的效果是完全一樣的)。
this可以代表任何對象,當this出現在某個方法體中時,它代表的對象是不確定的,但它的類型是確定的,它所代表的對象只能是當前類。只有當這個方法被調用時,它所
代表的對象才被確定下來。誰在調用這個方法,this就代表誰。
對於static修飾的方法而言,則可以使用類來直接調用該方法,如果在statis修飾的方法中使用this關鍵字,則這個關鍵字就無法指向合適的對象。所以,static修飾的方
法中不能使用this引用。由於static修飾的方法不能使用this引用,所以static修飾的方法不能訪問不使用static修飾的普通成員,因此java語法規定:靜態成員不能
直接訪問非靜態成員。
1 package com.bie.main; 2 3 /** 4 * 5 * @Description TODO 6 * @author biehl 7 * @Date 2019年3月9日 上午10:53:48 8 * 9 * 1、對象的this引用 10 * java提供了一個this關鍵字,this關鍵字總是指向調用該方法的對象。根據this出現位置的不同,this作為對象的默認引用有兩種情形。 11 * 1)、構造器中引用該構造器正在初始化的對象。 12 * 2)、在方法中引用調用該方法的對象。 13 * this關鍵字最大的作用就是讓類中一個方法,訪問該類的另一個方法或者實例變量。(java允許對象的一個成員直接調用另一個成員,可以省略this前綴。大部分時候,一 14 * 個方法訪問該類中的定義的其他方法、成員變量時加不加this前綴的效果是完全一樣的)。 15 * this可以代表任何對象,當this出現在某個方法體中時,它代表的對象是不確定的,但它的類型是確定的,它所代表的對象只能是當前類。只有當這個方法被調用時,它所 16 * 代表的對象才被確定下來。誰在調用這個方法,this就代表誰。 17 * 對於static修飾的方法而言,則可以使用類來直接調用該方法,如果在statis修飾的方法中使用this關鍵字,則這個關鍵字就無法指向合適的對象。所以,static修飾的方 18 * 法中不能使用this引用。由於static修飾的方法不能使用this引用,所以static修飾的方法不能訪問不使用static修飾的普通成員,因此java語法規定:靜態成員不能 19 * 直接訪問非靜態成員。 20 */ 21 public class Person { 22 23 public int age;//成員變量。 24 25 public Person() { 26 //構造器中定義一個age局部變量 27 int age = 0; 28 //使用this代表該構造器正在初始化的對象。 29 //將構造器正在初始化的對象age對象設置為25 30 this.age = 25; 31 } 32 33 public static void main(String[] args) { 34 System.out.println(new Person().age); 35 } 36 37 38 }
加強理解:
this關鍵字總是指向調用該方法的對象。根據this出現位置的不同,this作為對象的默認引用有兩種情形。
構造器中引用該構造器正在初始化的對象。注:this就是正在被初始化的對象。可以調用屬性字段。
在方法中引用調用該方法的對象。注:this就是調用該方法的對象,可以調用該方法的方法。
待續......