Конструкторы в Java
![Конструкторы в Java](/images/articles/java-constructors.jpeg)
В Java есть специальный тип метода, который называется конструктором. Конструкторы в Java используются для инициализации объекта, поэтому они вызываются в момент создания объекта.
При инициализации в конструкторе задаются начальные значения для переменных.
Далее пример с комментариями:
// GameUnit.java
// класс, описывающий точку в двумерном пространстве
class Point2D
{
int x; // аттрибуты класса
int y;
// конструктор по умолчанию
Point2D()
{
this.x = 0;
this.y = 0;
}
// конструктор с двумя параметрами
// при вызове различие происходит по параметрам - это назывется перегрузка метода
Point2D(int x, int y)
{
this.x = x; // устанавливаем значения для переменных
this.y = y;
}
public String toString()
{
return String.format("[Object Point{ x = %d, y = %d }]", x, y);
}
}
// класс, описывающий точку в трехмерном пространстве
class Point3D extends Point2D
{
int z;
// конструктор по умолчанию
Point3D()
{
// инициализация родительского конструктора
// super - ссылается на родительский конструктор
super();
this.z = 0;
}
Point3D(int x, int y, int z)
{
super(x,y); // вызов второго родительского конструктора
this.z = z;
}
@Override
public String toString()
{
return String.format("[Object Point{ x = %d, y = %d, z = %d }]", x, y, z);
}
}
// класс игрового объекта
class GameUnit
{
private Point2D position2d; // аттрибутом класса может быть пользовательский класс
private Point3D position3d;
// конструктор по умолчанию
GameUnit()
{
position2d = new Point2D();
position3d = new Point3D();
}
// конструктор с 2d точкой
GameUnit(Point2D position)
{
this.position2d = position; // инициализируем объект значениями
}
// конструктор с 3d точкой
GameUnit(Point3D position)
{
this.position3d = position;
}
// возвращает текущую 2D позицию игрового объекта
Point2D getPosition2D()
{
return position2d;
}
// возвращает текущую 3D позицию игрового объекта
Point3D getPosition3D()
{
return position3d;
}
}
// главный класс
public class Program
{
public static void main(String[] args)
{
Point2D startPosition = new Point2D(10,10);
GameUnit unit = new GameUnit(startPosition); // создаем объект, конструктор вызывается автоматически
// возвращаем позицию объекта x
System.out.println(unit.getPosition2D());
Point3D startPosition2 = new Point3D(10,10,20);
GameUnit unit2 = new GameUnit(startPosition2); // создаем объект, конструктор вызывается автоматически
// возвращаем позицию объекта x
System.out.println(unit2.getPosition3D());
}
}
//[Object Point{ x = 10, y = 10 }]
//[Object Point{ x = 10, y = 10, z = 20 }]
Таким образом, если Вы уже знаете какой либо объектно-ориентированный ЯП, то понимание конструкторов в Java для Вас не станет проблемой.
-
-
Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.