在UML中,如果它们作为基类,我们应该将它们声明为抽象类吗?

Han*_*Goc 0 polymorphism uml class object abstract

我们正在学习UML课程.老师说:

如果每个类都充当其派生类的基类,则应将其声明为abstract.

在下图中,假设我们要获得class german shepherdclass labradorclass chien (Dog woof woof).是否有义务class chien成为一个抽象的阶级

在此输入图像描述

Jon*_*art 5

不必要.

这种说法不一定正确.更正确的陈述是:

如果在没有引用具体派生类的情况下无法实例化每个类,则应将其声明为抽象类.

在您的示例中,它是有意义的Dog并且Animal是抽象的,因为您有更多特定的类可能会填写基类没有的细节.

但是,当然可以有一个具体的类,可以实例化(因此不是抽象的),但仍然可以作为另一个类的基础.