java吧 关注:1,241,201贴子:12,712,234
  • 14回复贴,共1

这里省略this为什么不行

只看楼主收藏回复

运行结果是 null: 0


1楼2014-11-24 19:28回复
    Vim就是叼


    IP属地:四川来自Android客户端2楼2014-11-24 19:31
    回复
      你不写this,2个name是谁知道哪个是哪个


      IP属地:河南3楼2014-11-24 19:36
      回复
        作用域问题,在哪里申明在哪里使用,不跟this.就表示是局部的这个name,而不是employee的name,
        就像你在执行这么一段代码:
        String name = "";
        name = name;
        是不会影响到成员变量那个name的值的。
        添加this就是为了区分employee的name和你传入的name,这里的this就代表了employee,就相当于employee.name=name;
        如果难理解可以把后则改成其他变量,
        public employee(String n, int a){
        name=n;
        age=a;
        //由于这个局部代码区域(构造器中)不存在“有歧义”的变量,所以这里的name和age就会被视为作用域更广的全局变量的name和age
        }


        4楼2014-11-24 19:36
        收起回复
          正确的应该是public employee(String name,int age ){
          this.name = name ;this.age=age;) 你少了this


          IP属地:广东5楼2014-11-24 19:37
          回复
            代表意义不同,第一NAME是对象的NAME,是你上面定义的私有的对象,后面是是方法里的NAME,不然分不清,电脑可不是人


            6楼2014-11-24 19:38
            回复
              问题已解决,构造函数的形参不能与实例变量名字相同,否则会在构造函数中覆盖实例变量。因此上面的程序改一下构造函数形参的名字就可以了


              7楼2014-11-24 19:52
              回复
                this调用成员变量,把方法传进来的name赋值给它


                来自Android客户端8楼2014-11-24 20:04
                收起回复
                  为什么你的编辑界面是透明的???


                  IP属地:上海9楼2014-11-24 20:07
                  收起回复
                    成员变量和局部变量(就是你这里面的参数)同名时的优先级当然是局部变量的优先级高


                    IP属地:湖北10楼2014-11-24 20:10
                    收起回复