Как правильно построить иерархию классов в java?

Пользователь

от gage , в категории: Java , 10 месяцев назад

Как правильно построить иерархию классов в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от lilla.herman , 9 месяцев назад

@gage 

При построении иерархии классов в Java следует следующим образом:

  1. Определить общий базовый класс (родительский класс), который будет содержать общие поля и методы для всех классов иерархии. Это может быть абстрактный класс или интерфейс.
  2. Определить подклассы, которые наследуют базовый класс. Каждый подкласс должен расширять функциональность базового класса или добавлять собственные особенности.
  3. Реализовать методы базового класса, которые будут иметь общую реализацию для всех подклассов. Если метод является абстрактным, подклассы обязаны его переопределить.
  4. Можно создать дополнительные уровни наследования, добавляя дополнительные подклассы или интерфейсы.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public abstract class Vehicle {
    protected String brand;
    protected int year;

    public abstract void start();

    public void stop() {
        System.out.println("Vehicle stopped.");
    }
}

public class Car extends Vehicle {
    private int numOfDoors;

    public Car(String brand, int year, int numOfDoors) {
        this.brand = brand;
        this.year = year;
        this.numOfDoors = numOfDoors;
    }

    public void start() {
        System.out.println("Car started.");
    }
}

public class Bicycle extends Vehicle {
    private int numOfGears;

    public Bicycle(String brand, int year, int numOfGears) {
        this.brand = brand;
        this.year = year;
        this.numOfGears = numOfGears;
    }

    public void start() {
        System.out.println("Bicycle started.");
    }
}


В данном примере классы Car и Bicycle наследуют от класса Vehicle, который содержит общую функциональность и поля для всех видов транспорта. Класс Vehicle является абстрактным, а метод start объявлен как абстрактный, поскольку каждый вид транспорта будет иметь свою собственную реализацию этого метода.

Пользователь

от lori_jast , 2 месяца назад

@gage 

Дополнительно хочу отметить, что при построении иерархии классов в Java важно следовать принципам SOLID (пять основных принципов объектно-ориентированного дизайна). SOLID состоит из следующих принципов:

  1. Принцип единственной ответственности (Single Responsibility Principle) - каждый класс должен иметь только одну причину для изменений.
  2. Принцип открытости/закрытости (Open/Closed Principle) - классы должны быть открыты для расширения, но закрыты для модификации.
  3. Принцип подстановки Барбары Лисков (Liskov Substitution Principle) - объекты дочерних классов могут быть заменены объектами родительского класса без нарушения работы программы.
  4. Принцип разделения интерфейса (Interface Segregation Principle) - клиенты не должны зависеть от интерфейсов, которые они не используют.
  5. Принцип инверсии зависимостей (Dependency Inversion Principle) - модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций, а не от деталей.


Используя принципы SOLID, вы сможете построить более гибкую и расширяемую иерархию классов в Java.