zoukankan      html  css  js  c++  java
  • 构造函数中加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的情况就不在这里说了,请到哥的其他文章里面找找~~

  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/Bingfengwangzuo/p/5674212.html
Copyright © 2011-2022 走看看