Ответ
Объявление класса в Java может включать следующие элементы (в общем порядке):
- Модификаторы доступа и класса:
public,protected,private(для вложенных),abstract,final,sealed,non-sealed,strictfp. - Ключевое слово
classи имя класса. - Параметры типа (Generics):
<T, R>. - Родительский класс (наследование):
extends SuperClass. - Реализуемые интерфейсы:
implements Interface1, Interface2. - Тело класса
{ ... }, которое содержит:- Поля (Fields): Переменные для хранения состояния объекта.
private int id; private static String defaultName = "Unknown"; // Статическое поле - Блоки инициализации:
{ /* Нестатический блок: выполняется перед каждым конструктором */ } static { /* Статический блок: выполняется при загрузке класса */ } - Конструкторы (Constructors): Специальные методы для создания экземпляров.
public MyClass(int id) { this.id = id; } - Методы (Methods): Определяют поведение объекта.
public int getId() { return id; } public static void printInfo() { /* статический метод */ } - Вложенные классы и интерфейсы:
// Статический вложенный класс public static class NestedStatic { ... } // Внутренний класс (inner class) public class Inner { ... } - Записи (Records, Java 16+): Краткая форма для классов-данных.
public record Point(int x, int y) { }
- Поля (Fields): Переменные для хранения состояния объекта.
Полный пример:
// 1,2,3,4,5,6 - Объявление класса
public abstract class Vehicle<T extends Engine> implements Movable {
// Поле
private T engine;
private static int totalVehicles = 0;
// Статический блок инициализации
static {
System.out.println("Vehicle class loaded.");
}
// Конструктор
public Vehicle(T engine) {
this.engine = engine;
totalVehicles++;
}
// Метод
public void start() {
engine.ignite();
System.out.println("Vehicle started.");
}
// Абстрактный метод
public abstract int getMaxSpeed();
// Статический метод
public static int getTotalVehicles() {
return totalVehicles;
}
// Вложенный enum
public enum FuelType { PETROL, DIESEL, ELECTRIC }
}