23:43
Урок 10: Абстрактные классы и интерфейсы

Курс по программированию на Java

Урок 10: Абстрактные классы и интерфейсы

В этом уроке мы рассмотрим абстрактные классы и интерфейсы в Java, которые позволяют создавать более гибкую и расширяемую архитектуру приложений.

Абстрактные классы

Абстрактный класс — это класс, который не может быть создан напрямую и предназначен для наследования. Абстрактные классы могут содержать как абстрактные методы (без реализации), так и методы с реализацией. Пример:

abstract class Animal {
 abstract void makeSound();
 
 void sleep() {
 System.out.println("Животное спит");
 }
}

class Dog extends Animal {
 @Override
 void makeSound() {
 System.out.println("Собака лает");
 }
}

public class AbstractClassExample {
 public static void main(String[] args) {
 Dog myDog = new Dog();
 myDog.makeSound(); // Выведет: Собака лает
 myDog.sleep(); // Выведет: Животное спит
 }
}

Результат выполнения

Собака лает
Животное спит

Интерфейсы

Интерфейс — это полностью абстрактный класс, который содержит только абстрактные методы. Классы могут реализовывать несколько интерфейсов, что позволяет создавать более гибкие и модульные приложения. Пример:

interface Animal {
 void makeSound();
}

interface Movable {
 void move();
}

class Cat implements Animal, Movable {
 @Override
 public void makeSound() {
 System.out.println("Кошка мяукает");
 }
 
 @Override
 public void move() {
 System.out.println("Кошка двигается");
 }
}

public class InterfaceExample {
 public static void main(String[] args) {
 Cat myCat = new Cat();
 myCat.makeSound(); // Выведет: Кошка мяукает
 myCat.move(); // Выведет: Кошка двигается
 }
}

Результат выполнения

Кошка мяукает
Кошка двигается

Упражнения

Упражнение 1: Абстрактный класс транспортного средства

Создайте абстрактный класс Vehicle с абстрактным методом move и методом stop, который выводит "Транспортное средство остановилось". Создайте подкласс Bicycle, который реализует метод move и выводит "Велосипед едет". Создайте объект класса Bicycle и вызовите оба метода.

Решение:

abstract class Vehicle {
 abstract void move();
 
 void stop() {
 System.out.println("Транспортное средство остановилось");
 }
}

class Bicycle extends Vehicle {
 @Override
 void move() {
 System.out.println("Велосипед едет");
 }
}

public class VehicleTest {
 public static void main(String[] args) {
 Bicycle myBike = new Bicycle();
 myBike.move(); // Выведет: Велосипед едет
 myBike.stop(); // Выведет: Транспортное средство остановилось
 }
}

Объяснение: Мы создали абстрактный класс Vehicle с абстрактным методом move и методом stop. В подклассе Bicycle мы реализовали метод move. Затем создали объект myBike и вызвали оба метода.

Упражнение 2: Интерфейс для домашних животных

Создайте интерфейс Pet с методами play и feed. Создайте класс Dog, который реализует интерфейс Pet, и методы play и feed выводят "Собака играет" и "Собака ест" соответственно. Создайте объект класса Dog и вызовите оба метода.

Решение:

interface Pet {
 void play();
 void feed();
}

class Dog implements Pet {
 @Override
 public void play() {
 System.out.println("Собака играет");
 }
 
 @Override
 public void feed() {
 System.out.println("Собака ест");
 }
}

public class PetTest {
 public static void main(String[] args) {
 Dog myDog = new Dog();
 myDog.play(); // Выведет: Собака играет
 myDog.feed(); // Выведет: Собака ест
 }
}

Объяснение: Мы создали интерфейс Pet с методами play и feed. В классе Dog мы реализовали эти методы. Затем создали объект myDog и вызвали оба метода.

Категория: Java | Просмотров: 96 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: