java - 我应该定义一个与父类(super class)型完全相同的子类型吗

标签 java inheritance

我有一个java作业。它的要求表明有一个名为 Module 的父类(super class)型。它有两个子类型类别“必修模块”和“选修模块”。前者继承了父类(super class)的所有属性;后者有一个额外的属性,称为部门名称。

我认为必修模块与普通模块相同。定义一个与父类(super class)相同的子类是正确的。每个模块实例必须是必修的或选修的。没有其他类型的模块。我是否应该将 Module 定义为抽象类,因为我不想在决定实际情况中应使用哪个类时感到困惑。或者有人可以给我一些提示。

最佳答案

看来您的问题已经有了答案。看起来您需要拥有 3 个类,尽管 CompulsoryModule 没有其他属性并且仅扩展了 Module。

模块本身可以是抽象的,也可以不是。这取决于您想要实现的目标。在某些情况下,您不可能将父类(super class) Module 定义为非抽象类。

例如,如果 Module 有一个方法,除非您使用 CompulsoryModule 或 ElectiveModule,否则您不知道如何实现,那么您必须将该方法定义为抽象方法,从而使整个类抽象。

此外,使类抽象化可以防止任何人创建该类的实例,并且只能实例化子类。同样,当某些事情在模块本身中没有完全定义并且需要特定的子类来理解父类(super class)的代码时,这是需要的。

关于java - 我应该定义一个与父类(super class)型完全相同的子类型吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808486/

相关文章:

c++继承自专门的模板类

javascript - AngularJS 中范围原型(prototype)/原型(prototype)继承的细微差别是什么?

java - Android 上的 Java 是否是原生的?

java - 如何使用JPA Criteria根据EmbeddedId的字段进行查询?

C# - 访问继承类中的属性

php - 实体公共(public)字段的学说继承

C++虚函数覆盖

java - 如何从 spring 实例化的 POJO 类(不是 servlet)中读取 manifest.mf?

java - Selenium WebDriver - 用于定位输入 + onclick 的 cssselector

java - 从以下树状数据结构中获取所有可能的组合