Java for Beginner
716 subscribers
659 photos
174 videos
12 files
1.03K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Основы ООП в Java

Глава 1. Классы и объекты


Конструкторы. Перегрузка. Ключевое слово this


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

Сигнатура конструктора:
Имя совпадает с именем класса.
Нет типа возвращаемого значения (даже void не пишется).
Может иметь параметры для передачи значений.


Если вы не определяете конструктор, Java создает пустой конструктор автоматически:
public Person() {
// Пусто, поля инициализируются значениями по умолчанию (null для объектов, 0 для чисел)
}


Пример простого конструктора:
public class Person {
private String name;
private int age;

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

При создании объекта new Person("Алексей", 35) конструктор присваивает значения полям.



Ключевое слово this

this — это ссылка на текущий объект.


Оно используется внутри класса для:
Отличия полей класса от параметров методов (если имена совпадают).
Вызова других конструкторов или методов текущего объекта.


Пример использования this:
public class Person {
private String name;
private int age;

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

Без this Java бы подумал, что name = name; — это присваивание параметра самому себе, что бесполезно.



Перегрузка конструкторов

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

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


Пример перегрузки:

public class Person {
private String name;
private int age;

// Конструктор по умолчанию (без параметров)
public Person() {
this.name = "Неизвестный";
this.age = 0;
}

// Конструктор с одним параметром
public Person(String name) {
this.name = name;
this.age = 0; // Возраст по умолчанию
}

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

// Вызов другого конструктора с помощью this()
public Person(int age) {
this("Неизвестный", age); // Вызывает конструктор с двумя параметрами
}
}

Теперь объекты можно создавать по-разному:Person p1 = new Person(); // Неизвестный, 0
Person p2 = new Person("Алексей"); // Алексей, 0
Person p3 = new Person("Алексей", 35); // Алексей, 35
Person p4 = new Person(35); // Неизвестный, 35



Как создать это в IntelliJ IDEA

Добавьте конструкторы в класс:
Откройте класс Person.
Вставьте код с перегрузкой.
IntelliJ IDEA может генерировать конструкторы: Правой кнопкой → Generate → Constructor, выберите поля.



Тестируйте в Main:
Создайте класс Main и добавьте код для создания объектов.
Запустите: Правой кнопкой на
Main.java → Run.


Полезные советы для новичков

Избегайте дублирования:
Используйте this() для вызова одного конструктора из другого. Вызов должен быть первой строкой.
Параметры vs поля: Всегда используйте this при совпадении имен — это хорошая практика.
Конструктор без параметров: Полезен для создания объектов с значениями по умолчанию.
Ошибки: Если конструктор с параметрами есть, дефолтный не создается автоматически — добавьте его вручную, если нужен.
Практика: Перегружайте конструкторы, чтобы класс был гибким.



#Java #для_новичков #beginner #constructor
👍4🔥1
Что выведет код?

class A190825 {
static {
System.out.print("1");
}

{
System.out.print("2");
}

public A190825() {
System.out.print("3");
}
}

class B190825 extends A190825 {
static {
System.out.print("4");
}

{
System.out.print("5");
}

public B190825() {
System.out.print("6");
}
}

public class Task190825 {
public static void main(String[] args) {
new B190825();
System.out.print("7");
new B190825();
}
}


#Tasks
👍2
👍2