Еще немного о классах
Класс - это упрощенное описание каких-нибудь реальных (чаще, правда, выдуманных) вещей.
Вот, например, точка. Единственное, что есть у точки - это её координаты в пространстве. Это её параметры.
Как задать точку на плоскости? Надо нарисовать точку и подписать её: M(1,2), т.е. точка с именем M и координатами х = 1, у = 2.
Это её "конструктор". Т.е. мы "сконструировали" конкретную точку М с конкретными координатами.
На языке Java это будет выглядеть так:
class Point { //общее описание точек
private double x, y; //параметры точки
Point(double ax, double ay) { //конструктор
x = ax;
y = ay;
}
}
Сконструируем точку
Point M = new Point(1, 2);
В данном классе задан один конкретный конструктор. Из-за этого каждая создаваемая точка будет ожидать, что при создании ей назначат координаты.
Т.е. данная строчка работать не будет:
Point M = new Point(); //пустые параметры //или Point M = new Point(1); //неполные параметры
Дальше. Класс включает в себя не только параметры, но и методы.
Что такое метод класса? Это вопрос, который мы можем задать или указание, что-либо сделать. Причем и вопрос и указания нужно адресовать уже конкретной сконструированной точке.
Научим точку сообщать свои координаты и перемещаться по одной из координатных осей:
class Point { //общее описание точек
private double x, y; //параметры точки
Point(double ax, double ay) { //конструктор
x = ax;
y = ay;
}
//запрос координаты Х
double getX() {
return x;
}
//запрос координаты Y
double getY() {
return y;
}
//указание сдвинуться по оси X на расстояние dx
void moveX(double dx) {
x = x + dx;
}
//указание сдвинуться по оси Y на расстояние dy
void moveY(double dy) {
y = y + dy;
}
}
//использование
public class Main {
public static void main(String[] args) {
//создаём точку
Point M = new Point(1, 2);
//спрашиваем у созданной точки - скажи нам, точка М свои координаты X и Y
System.out.println("Текущие координаты точки М: x = " + M.getX() + ", у = " + M.getY());
System.out.println("Сдвинем точку по оси Х на 5 и по оси У на -1");
//просим точку М - точка М, сдвинься на 5 по оси X
M.moveX(5);
//просим точку М - точка М, сдвинься на -1 по оси Y
M.moveY(-1);
//спрашиваем у точки М - скажи нам, точка М свои координаты X и Y
System.out.println("Новые координаты точки М: x = " + M.getX() + ", у = " + M.getY());
}
}
Еще раз повторю - методы вызываются у конкретной точки - сконструированного объекта.
Класс - это просто заготовка, шаблон, описание.
Т.е. пока точка не создана - мы как бы задумываем её нарисовать.
А вот когда сказали new, это значит, что мы нарисовали конкретную точку в конкретном месте координатной плоскости.
Записи вида
Point.getX(); //или Point.moveX(5);
Не имеют смысла, потому что описание ничего не знает.
Это как если спросить у человека - "скажи мне координаты точки?"
Логично будет подумать, что он ответит - "какой именно?"
Также делает и компилятор.
Нет обратных ссылок на эту запись.
Май 13th, 2013 - 15:24
Подскажите пожалуйста как можно нарисовать координатную плоскость по этому примеру.
Май 13th, 2013 - 15:37
Ну, вообще, это синтетический пример для объяснения того как устроен класс.
«Нарисовать» здесь ничего не получится.
Октябрь 30th, 2020 - 21:42
Спасибо, у вас большой талант преподавателя. Как классно все понятно стало, спасибо еще раз!