我可以写没有“ this”字样的课程吗

时间:2018-07-05 16:24:54

标签: java

在不使用this关键字的情况下编写类是否正确?我尝试了代码,然后删除了this,但没有任何改变

public class Dog
{
    String name;

    public Dog(String n){this.name = n;}

    public String getName(){return name;}


    public String toString(){
        return("Hi my name is "+ this.getName());
    }

    public static void main(String[] args){
        Dog tuffy = new Dog("tuffy");
        System.out.println(tuffy);
    }
}

3 个答案:

答案 0 :(得分:1)

如果您在类成员之前不使用此关键字,它将在编译时自动添加。因此,如果您所在的函数没有与该成员同名的参数,则无需该关键字就可以从某个函数引用该类的任何成员。但是,如果这样做,则必须使用它来引用类成员变量而不是参数。

尽管,由于代码的清晰性和可读性,即使不是必需的,程序员也经常使用this关键字。

答案 1 :(得分:1)

任何有关用Java编写类代码的基础知识的教程(包括official ones)都将对此进行介绍,因此值得从信誉良好的来源阅读类语法和this关键字。

在实例方法或构造函数中,this是对当前对象的显式引用。如果省略它,则仍将首先对照当前对象检查任何成员引用。因此,这有效:

class Dog {
  String name;
  public Dog(String n) { name = n; }
}

因为name是当前对象的成员。无论您使用this.name还是name都没有区别。

但是,类似这样的操作不会有用:

class Dog {
  String name;
  public Dog(String name){ name = name; }
}

所有这些操作就是获取传入的值,并将该值复制到自身上,然后在构造函数完成后立即将其丢弃。

在这种情况下,您需要使用this来做有意义的事情:

class Dog {
  String name;
  public Dog(String name){ this.name = name; }
}

现在name的值将被显式复制到名称与当前对象所拥有的相同相同的变量中。

答案 2 :(得分:0)

使用

this关键字避免shadowing由您在类中声明的变量完成。例如,您使用了局部变量String name。因此请使用this关键字以避免阴影。

public Dog(String name) { this.name = name; }

查看详情:What is the meaning of "this" in Java?