2016-09-26 31 views
-4

我目前正在上java课,今天我的老师说了一些我脑子里没有接受的东西,可能是错的。下面的代码,java这个关键字里面的构造函数

 class Ab{ 
     int x; 
     int b; 

      public Ab(int x, int b){ 
       this.x = x; 
       this.b = b; 
      } 


      public static void main(String[] args){ 
       Ab x = new Ab(4,5); // this is where my teacher confused me 

      } 
} 

我的老师说x Ab = new AB(4,5);会得到x对象调用构造函数构造函数是指它与this keyword过去了,什么是匿名类,如new Ab(2,4);现在会有什么this keyword是指?在我看来,this里面的构造函数没有链接引用变量,直到构造函数创建对象并将引用返回给变量。

+0

'this'指的是当前对象。 – Li357

+0

你的类定义了字段'int x',但是在你使用'this.a'的构造函数中。或者你的意思是int a和this.a或者int x和this.x。哪一个是对的? – walen

+0

为什么你的代码格式化? – markspace

回答

1

匿名类如new Ab(2,4);

这不是一个匿名类。这是一个表达式,用于创建AB类型的新对象。该表达式的值是对该对象的引用。 AB构造函数中的this的值是对该对象的引用。下面的值x是对象的引用。它们都是对同一个对象的引用。

Ab x = new Ab(4,5); // this is where my teacher confused me 
在我的观点

这里面的构造与参考变量没有联系,直到构造函数创建对象和引用返回变量。

构造函数中的this不需要引用另一个引用变量。它指向与构造函数返回时的x相同的对象。

引用不是对象本身。你可以认为它可能是指向一个对象的多个指针之一。

+0

上面得到了正确的答案,现在我明白了,非常感谢你 –

0

你,因为我们的变量的构造器的范围名称输入thisab被隐藏的参数ab的名字后面。 this意味着该类的当前对象。

编辑: 对象是用new关键字创建的。 x变量只是对象的引用。在类方法中,我们可以使用this来引用当前对象,在其他地方我们可以引用它。所以当你的老师告诉this指的是x他的意思是指可用x访问的对象。

+0

如果你能读到最后一段我解释过的每一件事情。 –

+0

在构造函数完成创建对象并返回对x变量的引用之前,构造函数中的“this关键字”是否与引用变量x有关系? –

+0

@RidaBatool我编辑了我的答案,向您解释一切,如果它有帮助,请接受它作为正确答案! –