Все в Java находится внутри классов и объектов. Объекты Java содержат состояние, состояние - это переменные, которые сохраняются вместе внутри объекта, мы называем их полями или переменными-членами.
Начнем с примера:
class Point {
int x;
int y;
}
Этот класс определил точку со значениями x и y.
Чтобы создать экземпляр этого класса, нам нужно использовать ключевое слово new
.
Point p = new Point();
В этом случае мы использовали конструктор по умолчанию (конструктор, который не получает аргументов) для создания Point. Все классы, которые явно не определяют конструктор, имеют конструктор по умолчанию, который ничего не делает.
Мы можем определить наш собственный конструктор:
class Point {
int x;
int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
Это означает, что мы больше не можем использовать конструктор по умолчанию . Теперь мы можем использовать только определенный конструктор .new Point()
new Point(4, 1)
Мы можем определить более одного конструктора, поэтому Point
их можно создать несколькими способами. Давайте снова определим конструктор по умолчанию.
class Point {
int x;
int y;
Point() {
this(0, 0);
}
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
Обратите внимание на использование this
ключевого слова здесь. Мы можем использовать его в конструкторе для вызова другого конструктора (чтобы избежать дублирования кода). Это может быть только первая строка в конструкторе.
Мы также использовали this
ключевое слово как ссылку на текущий объект, над которым мы работаем.
После того, как мы определились, p
мы можем получить доступ к x
и y
.
p.x = 3;
p.y = 6;
Теперь мы можем определить методы для Point
.
class Point {
... // Our code previously
void printPoint() {
System.out.println("(" + x + "," + y + ")");
}
Point center(Point other) {
// Returns the center between this point the other point
// Notice we are using integer, we won't get an accurate value
return new Point((x + other.x) / 2, (y + other.y) / 2);
}
}
Хотя мы поговорим о модификаторах позже, важно понимать разницу между частными и общедоступными переменными и методами.
При использовании ключевого слова private
перед переменной или методом это означает, что только сам класс может получить доступ к переменной или методу, когда мы его используем, public
это означает, что каждый может получить к нему доступ. Обычно мы видим конструкторы, определенные как общедоступные, переменные, определенные как частные, и методы разделены, некоторые общедоступные, а некоторые частные.
Напишите новый метод в Point с именем scale
, который сделает точку наполовину ближе к (0,0). Так, например, точка (8, 4) после шкалы будет (4, 2).