假设我们有一个用于考试的班级和一个用于课程工作的班级,这两个课程都需要相同的属性,例如,课程字词/考试ID,姓名,期限,体重等。

创建一个接口以便使两者都实现相同的方法(例如我在下面所做的事情)是否明智?
[] [
试图寻找最佳的面向对象方法,只是不确定我是否会有点矫kill过正。

谢谢

最佳答案

我认为最好的方法是创建一个从ClassWork和ClassExam继承的类Class。

父类ClassF将声明这些常规属性,而其他2个子类仅需声明使它们唯一的那些特定属性,因为继承隐含了常规属性。

我将举一个例子来解释:

       ClassF -> attributes: name, ID, weight, Date
              -> methods: getName() ....

             Exam -> attributes: marks
                  -> methods: calculateMarks()...

             CourseWork -> attributes: typeOfCourse
                        -> methods: printInfoCourse()...


子类Exam和CourseWork可以实现和使用例如ClassF中的ID,因为它是从其父类继承而来的。

决定是否允许实例化ClassF也许是一个好主意,因为在这种情况下,将ClassF转换为抽象类很有趣。



仅在此具体情况下进行记录,使用接口实现这些类是一种错误的方法,因为这不是接口的功能(https://docs.oracle.com/javase/tutorial/java/concepts/interface.html了解更多信息)

希望能帮助到你!

08-18 20:20