1. Что такое класс и объект
Давайте начнём с аналогии. Представьте себе чертёж автомобиля. На чертеже указано, что у машины есть четыре колеса, двигатель, цвет, сиденья и т.д. Но сам по себе чертёж не ездит по дорогам, не шумит мотором и не требует бензина. Это просто описание, как устроена машина.
Класс в программировании — это такой же "чертёж" (или шаблон), который определяет, какие данные (поля) и действия (методы) будут у его экземпляров.
Объект — это уже "реальная" машина, собранная по этому чертежу, тот самый конкретный экземпляр. У каждого объекта есть своё состояние (например, у одной машины цвет красный, у другой — синий), и поведение: каждый объект может выполнять действия, определённые в классе (например, ехать, тормозить, сигналить).
Примеры из жизни
- Класс: Человек (Person) — описание, что у человека есть имя, возраст, рост, и он может говорить или бегать.
- Объекты: Вася, Петя, Катя — конкретные люди, у каждого своё имя и возраст.
| Класс | Объект 1 | Объект 2 |
|---|---|---|
|
|
|
Почему классы важны?
- Группировать связанные переменные и методы вместе.
- Создавать сколько угодно объектов с одинаковой структурой, но разными данными.
- Легко описывать сложные сущности: например, "Счёт в банке", "Товар", "Книга", "Пользователь".
2. Синтаксис объявления класса
В Java класс объявляется с помощью ключевого слова class. За ним следует имя класса (по традиции — с заглавной буквы), а затем — фигурные скобки, внутри которых пишутся поля и методы.
Простейший пример
public class Person {
// Здесь будут поля и методы
}
Пояснение:
- public — модификатор доступа.
- class — говорит компилятору: "я объявляю класс".
- Person — имя класса (придумываете сами, но с большой буквы).
Важные правила именования классов
- Имя класса должно начинаться с заглавной буквы (например, Car, Account, Book).
- В имени класса не допускаются пробелы и специальные символы, кроме подчёркивания и $ (но это редкость).
- Если имя состоит из нескольких слов, используйте стиль CamelCase: BankAccount, BookStore.
Где писать классы?
Класс можно объявить в отдельном файле (обычно так и делают: один файл — один класс) либо внутри другого класса (о вложенных классах поговорим позже).
Например, файл Person.java:
public class Person {
// поля и методы
}
3. Поля и методы класса (кратко)
Пока что мы только объявили класс, но он пустой — как коробка без содержимого. Давайте добавим туда "свойства" (поля) и "действия" (методы).
Поля (переменные внутри класса)
Поля описывают, какие данные будут у каждого объекта этого класса.
public class Person {
String name; // имя человека
int age; // возраст
}
Методы (функции внутри класса)
Методы описывают, что умеет делать объект.
public class Person {
String name;
int age;
void sayHello() {
System.out.println("Привет, меня зовут " + name + "!");
}
}
Пояснение:
- void — метод ничего не возвращает (о возвращаемых значениях поговорим позже).
- sayHello() — имя метода, круглые скобки обязательны.
- Внутри метода можно обращаться к полям класса (например, к name).
4. Создание объекта
А теперь — магия! Как из чертежа сделать "реальную машину"? Для этого используется ключевое слово new.
Синтаксис создания объекта
Person vasya = new Person();
- Person — тип переменной (наш класс).
- vasya — имя переменной (можно придумать любое).
- new Person() — создание нового объекта типа Person.
Теперь у нас есть переменная vasya, которая ссылается на объект класса Person. У этого объекта есть свои поля и методы.
Доступ к полям и методам
Обращаемся к полям и методам через точку:
vasya.name = "Вася";
vasya.age = 25;
vasya.sayHello(); // Выведет: Привет, меня зовут Вася!
Можно создавать сколько угодно объектов
Person petya = new Person();
petya.name = "Петя";
petya.age = 30;
petya.sayHello(); // Привет, меня зовут Петя!
Каждый объект — независимая "копия" с собственными данными.
5. Связь с предыдущими темами
До сегодняшней лекции все переменные и методы мы объявляли прямо внутри класса с методом main и не задумывались о создании собственных типов. Теперь мы можем создавать свои собственные "контейнеры" данных и функций.
Это открывает огромные возможности! Теперь вы можете описывать любые сущности, которые встречаются в вашей задаче: клиентов, товары, счета, заказы, животных, автомобили — всё, что угодно. Программы становятся более структурированными, читаемыми и масштабируемыми.
Пример: наш первый собственный класс
Давайте напишем простой класс для нашей мини-программы — скажем, "БанковскийСчёт" (BankAccount). Мы будем развивать этот пример по мере прохождения курса.
public class BankAccount {
String owner; // владелец счёта
int balance; // баланс счёта
void printInfo() {
System.out.println("Владелец: " + owner + ", баланс: " + balance + " евро.");
}
}
Теперь в главном методе main (который по-прежнему нужен для запуска программы) мы можем создавать объекты этого класса:
public class Main {
public static void main(String[] args) {
BankAccount account1 = new BankAccount();
account1.owner = "Иван";
account1.balance = 1000;
account1.printInfo(); // Владелец: Иван, баланс: 1000 евро.
BankAccount account2 = new BankAccount();
account2.owner = "Мария";
account2.balance = 2000;
account2.printInfo(); // Владелец: Мария, баланс: 2000 евро.
}
}
Обратите внимание: каждый объект имеет свои значения полей. Если вы измените баланс у account1, это никак не повлияет на account2.
Визуальная схема: класс и объекты
graph TD
subgraph Class
Person["Class Person | name:String | age:int | sayHello()"]
end
subgraph Objects
vasya["vasya : Person | name = 'Vasya' | age = 20"]
petya["petya : Person | name = 'Petya' | age = 25"]
end
vasya --> Person
petya --> Person
Пояснение:
- Person — это класс (шаблон).
- vasya и petya — объекты (экземпляры), созданные по этому шаблону.
6. Типичные ошибки при объявлении классов и создании объектов
Ошибка № 1: Имя класса с маленькой буквы.
В Java принято (и компилятор не ругается, но все опытные программисты — да!) называть классы с заглавной буквы. Не пишите class person — пишите class Person.
Ошибка № 2: Отсутствие фигурных скобок.
Не забывайте, что тело класса всегда должно быть в фигурных скобках.
public class Person // ошибка!
String name;
Правильно:
public class Person {
String name;
}
Ошибка № 3: Попытка обращаться к полям и методам класса без создания объекта.
Если метод или поле не объявлены как static, обращаться к ним можно только через объект:
Person.sayHello(); // ошибка!
Правильно:
Person vasya = new Person();
vasya.sayHello();
Ошибка № 4: Несоответствие имени файла и имени класса (для public-класса).
Если класс объявлен как public, имя файла должно совпадать с именем класса:
// Файл Person.java
public class Person { ... }
Если файл называется иначе, компилятор выдаст ошибку.
Ошибка № 5: Использование переменных класса без инициализации объекта.
Поля класса (не static) принадлежат объекту, а не самому классу.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ