構造函數中加this和不加this的區別


class Cat                    

{

int a=5;

//構造函數

 public Cat(int a){

        a = a;

        }  

}

Cat  c=new Cat(4);

    這種情況下其實是把c對象的變量a的值都是初始化成了5,並沒有像我們想的一樣初始化為4。

    因為這個時候構造函數里面的a他不知道自己是這個類的對象a還是構造函數的參數a,但是因為類的對象a的作用域比較大,所以這個時候實質上是類的變量a把自己的值給了自己,也就是c把自己a這個變量初始化成了5,參數在調用構造函數的時候傳了過來,但是沒什么卵用··········

class Cat

{

int a=5;

//構造函數

   public Cat(int b){

        a = b;

        }  

}

Cat  c=new Cat(4);

    這種情況下c對象的變量a的值就是我們想要的4了。

    因為構造函數中參數名是b,類的變量名是a,這時c對象在調用構造函數初始化自己的時候,構造函數就能夠很好地區分哪個是參數,哪個是變量,這個時候構造函數拿到傳過來的參數4就有卵用了,因為這時候就知道把參數值賦值給變量了,c對象中a變量的值就成了4

class Cat

{

int a=5;

//構造函數

   public Cat(int a){

        this.a = a;

        }  

}

Cat  c=new Cat(4);

    這種情況下c對象的變量a的值也是我們想要的4。

    為啥子嘞,是這個樣子滴。其實原理還是和上面那個一樣,就是要把參數和類的變量區分開,這樣才可以進行正確的賦值。不然長的像個雙胞胎一樣,連你媽也不認識誰是誰,你叫我們可愛的函數怎么去區分嘛。

理解this的同學相信我不說你們也是懂得;不理解this用法的同學暫時可以這樣理解,本來是兩個一樣的東西,可愛的函數分不清,但是上面貼了個標簽說是我的,這樣函數就可以分清了,這樣就可以正確的賦值了。

注:關於this的情況就不在這里說了,請到哥的其他文章里面找找~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM