2012-05-19 69 views
3

我已经读过,在Java中,您不必明确地将这个关键字绑定到对象,这是由解释器完成的。它与Javascript相反,您总是必须知道这个的值。但是,Java中的这个是指向类还是对象呢?或者它有所不同? 这个问题是我尝试理解基本OO概念和设计模式的一部分,所以我可以将它们应用于Javascript。 谢谢。java这个关键字

+1

这是利用全能谷歌的 – keyser

+0

可能重复相当容易回答[爪哇this.method()与方法()](HTTP://计算器。com/questions/6547310/java-this-method-vs-method) – skaffman

+0

本教程将帮助您:http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html – ControlAltDel

回答

2

Java language specification状态:

当作为主要表达使用时,所述关键字这表示值 即是提供一种用于其 调用的实例方法的对象(§15.12)的引用,或对正在构建的对象。

I.e.它总是指向一个对象,而不是一个类。

9

在Java中,this总是指向一个对象而不是一个类。

1
在Java this is refer Current object

public class Employee{ 

String name,adress; 

Employee(){ 

this.name="employee"; 
this.address="address"; 

} 

} 
+1

downvoter谨慎地说为什么downvote? –

2

this指当前对象。

在一个实例方法或构造函数中,这是对当前对象的引用 - 该对象的方法或构造函数被调用。您可以使用此方法从实例方法或构造函数中引用当前对象的任何成员。

0

从官方文件(实测here):

在实例方法或构造,this是 参考当前对象 - 其方法或构造被 调用的对象。您可以使用此方法从 实例方法或构造函数中引用当前对象的任何成员。

这意味着在任何类的代码中,当您编写this时,指定您引用当前对象的事实。

作为一个侧面说明,你不能使用this静态字段或方法,因为它们不属于任何特定的对象(例如类的)。

+0

这不是'官方文档',它是一个教程。官方文档是JLS。 – EJP

1

在java中,'this'是一个关键字,基本上用于引用当前对象。在以下示例中,setter方法使用'this'来设置当前对象的名称和年龄值。

public class Person { 

    String name; 
    int age; 

    public String getName() { 
    return name; 
    } 

    public void setName(String name) { 
    this.name = name; 
    } 

    public int getAge() { 
    return age; 
    } 

    public void setAge(int age) { 
    this.age = age; 
    } 

    public static void main(String[] args) { 
    Person p = new Person(); 
    p.setName("Rishi"); 
    p.setAge(23); 
    System.out.println(p.getName() + " is " + p.getAge() + " years old"); 
    } 
} 
+0

noice回答:) – STEEL