Зачем в сеттере используется this? Java

241
05 августа 2018, 00:10

Есть код:

public class Book {
public void main(String[] args){
    Title title = new Title();
    Author author = new Author();
    Content content = new Content();
    title.setTitle("Bible");
    author.setAuthor("Jesus");
    content.setConetnt("Holy shit");
    title.show();
    author.show();
    content.show();
}
public class Title{
    public String title;
    public void setTitle (String title){
        this.title = title;
    }
    public String getTitle (){
        return title;
    }
    public void show (){
        System.out.println(title);
    }
}
public class Author{
    public String author;
    public void setAuthor (String author){
        this.author = author;
    }
    public String getAuthor (){
        return author;
    }
    public void show (){
        System.out.println(author);
    }
}
public class Content {
    public String conetnt;
    public void setConetnt (String conetnt){
        this.conetnt = conetnt;
    }
    public String getConetnt() {
        return conetnt;
    }
    public void show (){
        System.out.println(conetnt);
    }
}
}

Зачем здесь в методе set используется this?

Answer 1

Чтобы присвоить значение title из аргумента функции значению title класса. Почитай подробно про то, как работают сеттеры, классы и ООП в целом

Answer 2

this позволяет обращатся к членам класса. В твоем случае для того чтобы скрыть одноименный аргумент метода.

Answer 3

В левой части (this.title) - обращение к полю класса. В правой части (title) - обращение к локальной переменной из аргумента метода-сеттера.

Так как имена поля класса и локальной переменной совпадают, то используется служебное слово this для указания на поле класса.
Сама операция присваивает значение локальной переменной, (аргумент метода) полю класса.

PS: служебное слово this - ссылка на текущий экземпляр класса и запись this.title значит ссылку на глобальную переменную (поле класса) текущего класса с именем title (на локальные переменные таким способом ссылаться нельзя, так как они имеют меньшую область видимости, чем экземпляр класса)

READ ALSO
Android Google maps ошибка получения пути

Android Google maps ошибка получения пути

Хочу проложить маршрут между двумя точками Но выкидывает ошибку, хотя PostMan выдает результатВ чем ошибка?

251
Удалить записи из Set Aerospike

Удалить записи из Set Aerospike

Пользуюсь Aerospike клиентом

252
Можно сделать треугольник в CSS?

Можно сделать треугольник в CSS?

Нужно нарисовать треугольник на CSSСпособы которые описаны в статьях используют border, визуально они как треугольник, но внутри нельзя поместить...

262
Bootstrap плавающий div с прокруткой

Bootstrap плавающий div с прокруткой

Пытаюсь сделать так, чтобы на экране было две колонки - левая и праваяВ каждой колонке по таблице

284