this в Java. Помогите пожалуйста понять. Уместно ли использовать this?
Подскажите пожалуйста. Уместно ли использовать слово this в данном случае??
Я создал класс часы У класса есть поле VoltageIstochnika
Далее я создал метод, который написан ниже. Уместно ли там использования слова this??
public void changeBattery () {
System.out.println("VoltIst"+this.VoltageIstochnika);// Какой правильный вариант? Этот?
System.out.println("VoltIst"+VoltageIstochnika);// Или этот?
if(VoltageIstochnika<=2.8) {
this.VoltageIstochnika = 3.35F; // нужно ли здесь слово this?
this.SostoyanieIstochnika = 100;// а здесь?
System.out.println("Батарея на часах заменена на новую.\n");
System.out.println("VoltIst"+this.VoltageIstochnika);
System.out.println("VoltIst"+VoltageIstochnika);
} else {
System.out.println("Батарея в нормальном состоянии и не требует замены.");
}
============================================================ (В мэйн создал два объекта )
BatteryClock BatClock1 = new BatteryClock();
BatteryClock BatClock2 = new BatteryClock();
BatClock1.VoltageIstochnika = 2.4F;
BatClock2.VoltageIstochnika = 2.9F;
BatClock1.changeBattery();
BatClock2.changeBattery();
Ответы (3 шт):
Конкретно в вашем случае this писать не обязательно (и я редко где видел, чтобы это ключевое слово использовалось именно в таких случаях).
P.s. this обязательно нужно использовать тогда, когда название поля объекта и параметра метода (или конструктора, что по существу одно и то же) совпадают.
Пример:
class SomeClass
{
private String name;
public SomeClass(String name)
{
this.name = name;
}
}
в вашем случае this не обязательно. если хотите то можете оставить - это ни на что не влияет. this это просто указатель для компилятора и результат будет одинаков, что с ним, что без. как описал @Sergey Chernikov this обязательно нужно использовать если имена объектов, методов и тп одинаковы.
this это как Ссылка на элементы которые находятся в области видимости класса. Используется:
когда перекрывает область видимости
Box(double width, double height, double depth) { this.width = width; //одинаковые названия переменных (вне метода и внутри) }когда нужно вызвать из конструктора другой конструктор. Но важно помнить что в конструкторе вызов this() может находиться только в первой строчке конструктора:
public Toy(String name, int cost, int age) { this(name, cost); //используем другой конструктор this.age = age; } public Toy(String name, int cost) { this.name = name; this.cost = cost; }