JavaRush /Курсы /JAVA 25 SELF /Создание объектов с помощью new

Создание объектов с помощью new

JAVA 25 SELF
14 уровень , 3 лекция
Открыта

1. Ключевое слово new

В Java, чтобы создать объект любого класса, используется ключевое слово new. Это «магическое» слово просит JVM: выдели память под новый объект и вызови для него конструктор.

Аналогия:
Если класс — это чертёж автомобиля, то new — это завод, который по этому чертежу собирает реальную машину.

Пример

Person vasya = new Person();

Что здесь происходит:

  1. new Person() — создаётся новый объект типа Person (вызывается конструктор).
  2. vasya — переменная, в которой хранится ссылка на созданный объект.

Как это выглядит в памяти

Когда вы пишете Person vasya = new Person();, в памяти выделяется область под поля объекта (например, имя и возраст), а переменная vasya содержит адрес этой области — ссылку.

Внимание:
Если забыть написать new, переменная будет просто ссылкой, которая ни на что не указывает (null). Попытка обратиться к полям или методам такого «пустого» объекта приведёт к NullPointerException.

2. Вызов конструктора: как это работает?

Конструктор — это специальный метод, который вызывается при создании объекта и инициализирует его поля, подготавливая экземпляр к работе.

Синтаксис

ИмяКласса имяПеременной = new ИмяКласса(аргументы);
  • Если у класса есть конструктор с параметрами, их нужно обязательно передать.
  • Если конструктор без параметров (или по умолчанию), скобки остаются пустыми.

Пример: конструктор с параметрами

public class Person {
    String name;
    int age;

    // Конструктор с параметрами
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Создаём объект:

Person petya = new Person("Петя", 25);

Значения "Петя" и 25 попадут в поля name и age нового объекта.

Конструктор без параметров

public Person() {
    this.name = "Безымянный";
    this.age = 0;
}

Теперь можно написать:

Person mysteryMan = new Person(); // name="Безымянный", age=0

3. Работа с объектом: поля и методы

После создания объекта вы можете обращаться к его полям и методам через оператор точки (.):

petya.name = "Пётр";
System.out.println(petya.name); // Пётр

petya.sayHello();

Если в классе есть метод:

public void sayHello() {
    System.out.println("Привет, меня зовут " + name + "!");
}

То вызов petya.sayHello(); выведет: Привет, меня зовут Пётр!

Пример: полный класс

public class Person {
    String name;
    int age;

    public Person(String name, int age) { // конструктор
        this.name = name;
        this.age = age;
    }

    public void sayHello() { // метод
        System.out.println("Привет, меня зовут " + name + "!");
    }
}

Использование:

Person vasya = new Person("Вася", 30);
vasya.sayHello(); // Привет, меня зовут Вася!

4. Ссылочные переменные: что это такое?

Переменная типа класса в Java — это ссылка на объект в памяти, а не сам объект.

Демонстрация

Person vasya = new Person("Вася", 30);
Person anotherVasya = vasya;

Теперь и vasya, и anotherVasya указывают на один и тот же объект в памяти. Если изменить поле через одну переменную — оно изменится и для другой:

anotherVasya.age = 31;
System.out.println(vasya.age); // 31

Важный момент:
Если создать два разных объекта, они независимы:

Person petya = new Person("Петя", 25);
Person masha = new Person("Маша", 22);

petya.age = 99;
System.out.println(masha.age); // 22 (не изменилось!)

5. Пример: создание и использование нескольких объектов

Добавим в приложение несколько объектов. Пусть у нас будет класс Person, а в main создадим несколько людей и выведем их приветствия.

Класс Person

public class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void sayHello() {
        System.out.println("Привет, меня зовут " + name + ", мне " + age + " лет!");
    }
}

Использование в main

public class Main {
    public static void main(String[] args) {
        Person vasya = new Person("Вася", 25);
        Person petya = new Person("Петя", 27);

        vasya.sayHello(); // Привет, меня зовут Вася, мне 25 лет!
        petya.sayHello(); // Привет, меня зовут Петя, мне 27 лет!

        // Демонстрация независимости объектов:
        vasya.age = 100;
        vasya.sayHello(); // Привет, меня зовут Вася, мне 100 лет!
        petya.sayHello(); // Привет, меня зовут Петя, мне 27 лет!
    }
}

Вывод программы:

Привет, меня зовут Вася, мне 25 лет!
Привет, меня зовут Петя, мне 27 лет!
Привет, меня зовут Вася, мне 100 лет!
Привет, меня зовут Петя, мне 27 лет!

6. Типичные ошибки при создании объектов

Ошибка №1: Забыли написать new

Person vasya;
vasya.name = "Вася"; // NullPointerException!

Переменная vasya не ссылается ни на какой объект (null). Нужно обязательно создать объект с помощью new.

Ошибка №2: Не передали параметры в конструктор

Person petya = new Person(); // Ошибка компиляции, если нет конструктора без параметров

Если в классе есть только конструктор с параметрами, нужно обязательно указать эти параметры при создании объекта.

Ошибка №3: Думаете, что переменная хранит сам объект

Person a = new Person("Аня", 20);
Person b = a;
b.age = 99;
System.out.println(a.age); // 99, потому что a и b — это ссылки на один объект!

В Java переменная типа класса — всегда ссылка, а не сам объект.

Ошибка №4: Изменяете поля одного объекта, ожидая, что другой не изменится

Person x = new Person("X", 1);
Person y = x;
x.age = 42;
System.out.println(y.age); // 42

Если нужны два независимых объекта — создавайте их отдельно!

1
Задача
JAVA 25 SELF, 14 уровень, 3 лекция
Недоступна
Ваш первый виртуальный питомец
Ваш первый виртуальный питомец
1
Задача
JAVA 25 SELF, 14 уровень, 3 лекция
Недоступна
Прибытие нового жителя в цифровой приют
Прибытие нового жителя в цифровой приют
1
Задача
JAVA 25 SELF, 14 уровень, 3 лекция
Недоступна
Расставляем машины на виртуальной витрине
Расставляем машины на виртуальной витрине
1
Задача
JAVA 25 SELF, 14 уровень, 3 лекция
Недоступна
Учёт книг в библиотеке: новые поступления
Учёт книг в библиотеке: новые поступления
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Sdsadasd Уровень 15
5 января 2026
Всегда интересно наблюдать за тем как число решённых задач падает с каждой лекцией
24 декабря 2025
Ksanders Уровень 32
20 октября 2025
Задачи этой лекции кажутся абсолютно однообразными, вообще не нужно напрягаться. Было би интресней, если бы была задача повышенного уровня сложности.