Основы ООП в Java
НАВИГАЦИЯ ПО СТРАНИЦЕ
1. Классы и объекты :
Класс — это шаблон для создания объектов.
Он определяет состояние (поля) и поведение (методы) объекта.
public class Car {
// Поля класса
String brand;
String model;
int year;
// Конструктор класса
public Car(String brand, String model, int year) {
this.brand = brand;
this.model = model;
this.year = year;
}
// Метод для вывода информации о машине
public void displayInfo() {
System.out.println("Марка: " + brand);
System.out.println("Модель: " + model);
System.out.println("Год выпуска: " + year);
}
}
Объект — это экземпляр класса.
Он представляет собой конкретный элемент, созданный на основе класса.
public class Main {
public static void main(String[] args) {
// Создание объекта класса Car
Car myCar = new Car("Toyota", "Camry", 2022);
// Вызов метода объекта
myCar.displayInfo();
}
}
2. Инкапсуляция :
Инкапсуляция означает ограничение доступа к состоянию объекта и предоставление методов для взаимодействия с этим состоянием.
public class BankAccount {
// Приватные поля класса
private String accountNumber;
private double balance;
// Конструктор класса
public BankAccount(String accountNumber) {
this.accountNumber = accountNumber;
this.balance = 0.0;
}
// Геттер для получения номера счета
public String getAccountNumber() {
return accountNumber;
}
// Геттер для получения баланса
public double getBalance() {
return balance;
}
// Сеттер для установки баланса
public void setBalance(double balance) {
this.balance = balance;
}
// Метод для внесения средств на счет
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("Операция по внесению средств выполнена успешно.");
} else {
System.out.println("Введите сумму больше нуля.");
}
}
// Метод для снятия средств со счета
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
System.out.println("Операция по снятию средств выполнена успешно.");
} else {
System.out.println("Недостаточно средств на счете или введена некорректная сумма.");
}
}
}
3. Наследование :
Наследование позволяет создавать новый класс на основе существующего. Новый класс, называемый подклассом, может наследовать поля и методы от существующего класса, называемого суперклассом.
public class Animal {
// Поле суперкласса
String name;
// Конструктор суперкласса
public Animal(String name) {
this.name = name;
}
// Метод суперкласса
public void makeSound() {
System.out.println("Some generic sound");
}
}
// Подкласс, наследующий Animal
public class Dog extends Animal {
// Дополнительное поле подкласса
String breed;
// Конструктор подкласса
public Dog(String name, String breed) {
super(name); // Вызов конструктора суперкласса
this.breed = breed;
}
// Переопределение метода суперкласса
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
// Дополнительный метод подкласса
public void wagTail() {
System.out.println("Tail is wagging");
}
4. Полиморфизм :
Полиморфизм позволяет объектам разных классов использоваться как объекты одного и того же типа. Это достигается через переопределение методов.
public class PolymorphismExample {
public static void main(String[] args) {
// Создание объектов разных классов
Animal cat = new Animal("Whiskers");
Animal dog = new Dog("Buddy", "Golden Retriever");
// Вызов метода makeSound для объектов разных классов
cat.makeSound(); // Output: Some generic sound
dog.makeSound(); // Output: Woof! Woof!
// Приведение типов (downcasting) для вызова метода wagTail только для объекта класса Dog
if (dog instanceof Dog) {
Dog specificDog = (Dog) dog;
specificDog.wagTail(); // Output: Tail is wagging
}
}
}
Описание кода:
Классы и объекты: Пример с классом Car и его использованием в классе Main демонстрирует создание класса, определение полей, конструктора и методов, а также создание и использование объекта этого класса.
Инкапсуляция: Пример с классом BankAccount и его использованием в классе BankApplication показывает, как можно использовать инкапсуляцию для скрытия состояния объекта и предоставления методов для взаимодействия.
Наследование: Пример с классами Animal и Dog демонстрирует использование наследования, создание подкласса, переопределение метода и использование суперкласса.
Полиморфизм: Пример с классом PolymorphismExample показывает, как объекты разных классов могут использоваться как объекты одного и того же типа. Это достигается через переопределение методов и приведение типов.