public class Space {
private int width;
private int height;
private SpaceShip ship;
private ArrayList<Ufo> ufos = new ArrayList<>();
private ArrayList<Rocket> rockets = new ArrayList<>();
private ArrayList<Bomb> bombs = new ArrayList<>();
public static void main(String[] args) {
}
public Space(int x, int y) {
this.width=x;
this.height=y;
}
int getWidth() {
return this.width;
}
int getHeight() {
return this.height;
}
public void setShip(SpaceShip ship) {
this.ship = ship;
}
public ArrayList<Ufo> getUfos() {
return this.ufos;
}
public ArrayList<Rocket> getRockets() {
return this.rockets;
}
public ArrayList<Bomb> getBombs() {
return this.bombs;
}
public SpaceShip getShip() {
return this.ship;
}
}
Анализирую код и пытаюсь проверять себя на крепость понимания простых вещей - не всегда получается.
Вот в данном случае, если мы в геттерах уберем this, то что изменится ?
Валик принял и тот и другой варианты.
Или если this убрать, но он автоматом его добавит?
ilya
35 уровень
Вопрос
Архивный
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #1278682
21 декабря 2017, 11:05
через this ты обращаешься к полю объекта
0
Roman Pryshchepa Java Developer Expert
21 декабря 2017, 08:42
Почитай про видимость переменных и this.
Для примера в сеттере:
аргумент метода ship перекрывает переменную объекта ship, поэтому требуется для переменной объекта указать this.
А вот в геттере:
такой коллизии нет, поэтому компилятор знает, что ship в данном случае переменная объекта. Поэтому this необязателен. 0
ilya
21 декабря 2017, 23:54
с сеттером то понятно)
Так геттер возвращает переменную, привязанную к объекту по итогу (которая с ним в куче) или к классу? Если к классу, то почему поле не статик сделали ?
0
Roman Pryshchepa Java Developer Expert
22 декабря 2017, 07:53
К объекту конечно, исправил неточность.
0