构造函数中加this和不加this的区别

class Cat                    函数

{this

int a=5;spa

//构造函数对象

 public Cat(int a){作用域

        a = a;class

        }  变量

}原理

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的状况就不在这里说了,请到哥的其余文章里面找找~~

相关文章
相关标签/搜索