构造函数中的 this.setMethod(parameter) 和 setMethod(parameter) 有什么区别? [Java]

What is the difference between this.setMethod(parameter) and setMethod(parameter) in a constructor? [Java]

最近几天我一直在尝试了解 类 和对象,我意识到在构造函数中使用“this.set”和“set”没有明显区别。澄清

public Movie(String title,String director, String rating) {
        setTitle(title); 
        setDirector(director);
        setRating(rating);

public Movie(String title,String director, String rating) {
        this.setTitle(title); 
        this.setDirector(director);
        this.setRating(rating);

没有区别,而 运行。

有什么区别,如果有的话,哪个更好?

我原以为会出现某种错误,但结果完全一样。此外,我的讲师 使用“this”。在他的示例中将 setter 放入构造函数中。

谢谢。

this.* 中,您正在调用位于“this”实例的方法。从实现相同方法的 class 继承时,您还有机会调用 super.setTitle()。

或者举个例子:

class Foo
{
    public int baz()
    {
        return -1;
    }
}

class Bar extends Foo
{
    private Bar()
    {
        super.baz(); // returns -1
        this.baz(); // returns 1
    }

    public int baz()
    {
        return 1;
    }
}

在您的示例中调用 setter 方法时无需使用 this(这不是标准做法)。但是,如果要在构造函数中设置与变量同名的字段,则必须使用 this。例如:

public class Movie {
    private final String title;

    public Movie(String title) {
        this.title = title;
    }
}

如果您不指定 this.title,它会认为您正在尝试将 title 变量分配给它自己。

当你的class扩展了另一个class时,关键字this也需要区分方法的不同实现(例如你可以调用this.method()super.method().)