import java.math.BigDecimal;
import java.time.LocalDateTime;
public class BankAccount {
String name;
LocalDateTime opened;
BigDecimal balance;
@Override
public String toString() {
return """
Имя: %s
Дата создания: %s
Баланс: %s
""".formatted(name, opened.toString(), balance);
}
} public class Main {
public static void main(String[] args) {
BankAccount account = new BankAccount();
System.out.println(account);
}
}
BankAccount account = new BankAccount(); import java.math.BigDecimal;
import java.time.LocalDateTime;
public class BankAccount {
String name;
LocalDateTime opened;
BigDecimal balance;
public BankAccount() {
name = "unknown";
opened = LocalDateTime.now();
balance = BigDecimal.ZERO;
}
@Override
public String toString() {
// без изменений
}
} Имя: unknown
Дата создания: 2025-10-14T11:02:52.244236800
Баланс: 0 // ❌ Не метод, поскольку не указан тип возвращаемого значения
// И не конструктор, поскольку имя указано с маленькой буквы
public bankAccount() { }
// ❌ Это не конструктор, а метод, поскольку указан возвращаемый тип
public void BankAccount() { }
import java.math.BigDecimal;
import java.time.LocalDateTime;
public class BankAccount {
String name;
LocalDateTime opened;
BigDecimal balance;
public BankAccount() {
// без изменений
}
public BankAccount(String name, LocalDateTime opened, BigDecimal balance) {
System.out.println("Параметризованный конструктор:");
this.name = name;
this.opened = opened;
this.balance = balance;
}
@Override
public String toString() {
// без изменений
}
} public static void main(String[] args) {
BankAccount account1 = new BankAccount();
System.out.println(account1);
LocalDateTime opened = LocalDateTime.of(1986, 5, 30, 4, 30);
BankAccount account2 = new BankAccount("Max", opened, new BigDecimal("123.0"));
System.out.println(account2);
} Конструктор без аргументов:
Имя: unknown
Дата создания: 2025-10-15T11:39:43.423807800
Баланс: 0
Параметризованный конструктор:
Имя: Max
Дата создания: 1986-05-30T04:30
Баланс: 123.0 // ❌ менее предпочтительно
BankAccount account = new BankAccount();
account.setName("Max");
account.setOpened(LocalDateTime.now());
account.setBalance(new BigDecimal("1000.0"));
// ✅ более надежно
BankAccount account =
new BankAccount("Max", LocalDateTime.now(), new BigDecimal("1000.0")); public BankAccount(String name, LocalDateTime opened, BigDecimal balance) {
// Проверка параметров на корректность
if (name == null || name.trim().isBlank()) {
throw new IllegalArgumentException("Имя не может быть пустым");
}
if (opened == null) {
throw new IllegalArgumentException("Дата не может быть пустой");
}
if (balance.compareTo(BigDecimal.ZERO) < 0) {
throw new IllegalArgumentException("Баланс не может быть отрицательным");
}
this.name = name;
this.opened = opened;
this.balance = balance;
} public class BankAccount {
String name;
LocalDateTime opened;
BigDecimal balance;
public BankAccount(String name, LocalDateTime opened, BigDecimal balance) {
this.name = name;
this.opened = opened;
this.balance = balance;
}
}
public static void main(String[] args) {
BankAccount account = new BankAccount();
}
import java.math.BigDecimal;
import java.time.LocalDateTime;
public class BankAccount {
String name;
LocalDateTime opened;
BigDecimal balance;
public BankAccount() {
// без изменений
}
public BankAccount(BankAccount account) {
System.out.println("Конструктор копирования:");
name = account.name;
opened = LocalDateTime.now();
balance = BigDecimal.ZERO;
}
public BankAccount(String name, LocalDateTime opened, BigDecimal balance) {
// без изменений
}
@Override
public String toString() {
// без изменений
}
} public static void main(String[] args) {
BankAccount account1 = new BankAccount();
System.out.println(account1);
LocalDateTime opened = LocalDateTime.of(1986, 5, 30, 4, 30);
BankAccount account2 = new BankAccount("Max", opened, new BigDecimal("123.0"));
System.out.println(account2);
BankAccount account3 = new BankAccount(account2);
System.out.println(account3);
} Конструктор без аргументов:
Имя: unknown
Дата создания: 2025-10-15T16:52:51.938440600
Баланс: 0
Параметризованный конструктор:
Имя: Max
Дата создания: 1986-05-30T04:30
Баланс: 123.0
Конструктор копирования:
Имя: Max
Дата создания: 2025-10-15T16:52:51.952046700
Баланс: 0 public class Customer {
String name;
public Customer(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
} import java.math.BigDecimal;
import java.time.LocalDateTime;
public class BankAccount {
Customer customer;
LocalDateTime opened;
BigDecimal balance;
public BankAccount() {
System.out.println("1. Конструктор без аргументов:");
customer = new Customer("unknown");
opened = LocalDateTime.now();
balance = BigDecimal.ZERO;
}
public BankAccount(BankAccount account) {
System.out.println("2. Конструктор копирования (поверхностное):");
customer = account.customer;
opened = LocalDateTime.now();
balance = BigDecimal.ZERO;
}
public BankAccount(Customer customer, LocalDateTime opened, BigDecimal balance) {
System.out.println("3. Параметризованный конструктор:");
this.customer = customer;
this.opened = opened;
this.balance = balance;
}
@Override
public String toString() {
return """
Имя: %s
Дата создания: %s
Баланс: %s
""".formatted(customer, opened, balance);
}
} public static void main(String[] args) {
BankAccount account1 = new BankAccount();
System.out.println(account1);
LocalDateTime opened = LocalDateTime.of(1986, 5, 30, 4, 30);
Customer customer = new Customer("Max");
BankAccount account2 =
new BankAccount(customer, opened, new BigDecimal("123.0"));
System.out.println(account2);
BankAccount account3 = new BankAccount(account2);
System.out.println(account3);
// Изменяем имя в account2
account2.customer.name = "ch1max";
System.out.println("Вывод имени после его изменения в account2:");
System.out.println("Имя владельца account2: " + account2.customer.name);
System.out.println("Имя владельца account3: " + account3.customer.name);
} 1. Конструктор без аргументов:
Имя: unknown
Дата создания: 2025-10-21T09:30:00.043552400
Баланс: 0
3. Параметризованный конструктор:
Имя: Max
Дата создания: 1986-05-30T04:30
Баланс: 123.0
2. Конструктор копирования (поверхностное):
Имя: Max
Дата создания: 2025-10-21T09:30:00.061132800
Баланс: 0
Вывод имени после его изменения в account2:
Имя владельца account2: ch1max
Имя владельца account3: ch1max import java.math.BigDecimal;
import java.time.LocalDateTime;
public class BankAccount {
Customer customer;
LocalDateTime opened;
BigDecimal balance;
public BankAccount() {
// без изменений
}
public BankAccount(BankAccount account) {
System.out.println("2. Конструктор копирования (глубокое):");
customer = new Customer(account.customer.name);
opened = LocalDateTime.now();
balance = BigDecimal.ZERO;
}
public BankAccount(Customer customer, LocalDateTime opened, BigDecimal balance) {
// без изменений
}
@Override
public String toString() {
// без изменений
}
} 1. Конструктор без аргументов:
Имя: unknown
Дата создания: 2025-10-21T14:42:45.169857500
Баланс: 0
3. Параметризованный конструктор:
Имя: Max
Дата создания: 1986-05-30T04:30
Баланс: 123.0
2. Конструктор копирования (глубокое):
Имя: Max
Дата создания: 2025-10-21T14:42:45.190725400
Баланс: 0
Вывод имени после его изменения в account2:
Имя владельца account2: ch1max
Имя владельца account3: Max import java.math.BigDecimal;
import java.time.LocalDateTime;
public class BankAccount {
Customer customer;
LocalDateTime opened;
BigDecimal balance;
public BankAccount() {
this("unknown");
System.out.println("1. Конструктор без аргументов:");
}
public BankAccount(String name) {
this(new Customer(name), LocalDateTime.now(), BigDecimal.ZERO);
System.out.println("2. Параметризованный конструктор с одним параметром:");
}
public BankAccount(Customer customer, LocalDateTime opened, BigDecimal balance) {
System.out.println("3. Параметризованный конструктор:");
this.customer = customer;
this.opened = opened;
this.balance = balance;
}
@Override
public String toString() {
// без изменений
}
} public static void main(String[] args) {
BankAccount account1 = new BankAccount();
System.out.println(account1);
BankAccount account2 = new BankAccount("Max");
System.out.println(account2);
} // Создание account1:
3. Параметризованный конструктор:
2. Параметризованный конструктор с одним параметром:
1. Конструктор без аргументов:
Имя: unknown
Дата создания: 2025-11-04T16:09:05.004008100
Баланс: 0
// Создание account2:
3. Параметризованный конструктор:
2. Параметризованный конструктор с одним параметром:
Имя: Max
Дата создания: 2025-11-04T16:09:05.022858300
Баланс: 0 Порядок выполнения для account1:
1. new BankAccount() вызывает this("unknown")
2. BankAccount(String name) вызывает
this(new Customer(name), LocalDateTime.now(), BigDecimal.ZERO)
3. Выполняется тело конструктора (3) — объект готов
4. Возврат в конструктор (2) — вывод сообщения
5. Возврат в конструктор (1) — вывод сообщения
Порядок выполнения для account2:
1. new BankAccount("Max") вызывает
this(new Customer(name), LocalDateTime.now(), BigDecimal.ZERO)
2. Выполняется тело конструктора (3) — объект готов
3. Возврат в конструктор (2) — вывод сообщения public class BankAccountUtils {
private BankAccountUtils() {}
public static String concat(String name, String surname) {
return name + " " + surname;
}
} public class Main {
public static void main(String[] args) {
System.out.println(BankAccountUtils.concat("Ch1", "Max"));
}
}
public class BankAccount { }
public BankAccount() { } public class BankAccount {
String name;
LocalDateTime opened;
BigDecimal balance;
BankAccount(String name, LocalDateTime opened, BigDecimal balance) {
this.name = name;
this.opened = opened;
this.balance = balance;
}
}
class VipBankAccount extends BankAccount {
}
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDateTime actionDate = LocalDateTime.now();
VipBankAccount vipBankAccount =
new VipBankAccount("Tom", actionDate, BigDecimal.ZERO);
}
}
public class VipBankAccount extends BankAccount {
VipBankAccount(String name, LocalDateTime opened, BigDecimal balance) {
super(name, opened, balance);
}
} public class BankAccount {
String name;
LocalDateTime opened;
BigDecimal balance;
public BankAccount(String name, LocalDateTime opened, BigDecimal balance) {
this.name = name;
this.opened = opened;
this.balance = balance;
}
} public class VipBankAccount extends BankAccount {
VipBankAccount() {}
} VipBankAccount() {
super(); // метод вставлен компилятором автоматически
}
class BankAccount {
private String name;
String getName() {
return name;
}
public BankAccount(String name) {
this.name = name;
}
} class BankAccount {
private String name;
public BankAccount(String name) {
this.name = name;
}
String getName() {
return name;
}
} Player (String name)
Resume (String uuid)
new Cat () Player(String name)
Resume(String uuid)
new Cat() class Resume {
Resume(String name, int number) {}
Resume() {}
Resume(String name) {}
} class Resume {
Resume() {}
Resume(String name) {}
Resume(String name, int number) {}
} public Jaeger(String modelName, String mark, String origin,
float height, float weight, int strength) {
this.modelName = modelName;
this.mark = mark;
...
}
Jaeger jaeger = new Jaeger("Guardian Bravo", "Mark-6", "Japan",
73.21f, 2.18f, 35, 70); public Jaeger(String modelName, String mark, String origin,
float height, float weight, int strength) {
this.modelName = modelName;
this.mark = mark;
...
}
Jaeger jaeger = new Jaeger("Guardian Bravo", "Mark-6", "Japan",
73.21f, 2.18f, 35, 70);