Почему этот класс лучше подходит, чтобы быть абстрактным, а не конкретным? - PullRequest
0 голосов
/ 22 мая 2019

Почему этот класс Student (класс, который создает новые объекты учеников и присваивает им уникальные идентификаторы) лучше подходит для абстрактного класса, чем для конкретного класса?Каждому созданному объекту студента присваивается его собственное право уникального идентификатора, так почему бы просто не иметь реализацию метода Graduate () внутри самого класса, а не реализованную унаследованным классом?

public abstract class Student {
    protected int id;
    private static int lastID = 0;
    protected String firstName;
    protected String familyName;

    public Student(String firstName, String familyName) {
        id = Student.nextID();
        this.firstName = firstName;
        this.familyName = familyName;
    }

    private static int nextID() {
        return ++lastID;
    }

    public String toString() {
        return firstName + " " + familyName;
    }

    // Generate string containing graduation information
    public abstract String graduate();
}

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Дело в том, что если у вас есть различные подклассы ученика, каждый из которых имеет свой отличительный дифференцирующий атрибут , скажем, «основной класс».

Таким образом: эта модель допускает только учеников с отдельным «основным классом», поэтому было бы целесообразно предотвратить создание «сырых» ученических объектов, у которых отсутствует соответствующий «атрибут».

Но вы должны понимать: причины, которые определяют, как именно вы строите свою объектную модель (какие классы являются абстрактными, а какие нет), возникают из того, что вы намереваетесь моделировать.

Другими словами: человек, пишущий этот реферат Студенческий класс счел, что выполнение этого точно так же, как это будет наилучшим образом соответствовать основным требованиям. В другом контексте Студент может быть не абстрактным.

0 голосов
/ 22 мая 2019

Обычно ученический класс написан как абстрактный из-за типов учеников, которые у вас будут. то есть, средняя школа, колледж и т. д.

У некоторых студентов есть информация, которой нет у других. Например, у студента колледжа может быть номер в общежитии, который не будет у старшеклассника. Абстрактный класс позволяет вам иметь больше гибкости и не использовать единственное определение для студента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...