【发布时间】:2021-01-01 02:05:58
【问题描述】:
我正在尝试使用 Java 实现下面的 UML:
我已经成功地执行了每一条指令,除了一个是:
戏剧课:
- 覆盖 showArea 方法并显示大小乘以 12。
我是 UML 新手,据我了解,我不允许在任何类中创建构造函数。这很令人困惑,因为我不知道在哪里可以定义 showArea 的大小。
下面是我现在的工作代码。
地方课
public abstract class Place {
private String placeName;
private int capacity;
private String placeDescription;
private int workingHours;
public abstract void showEvents();
}
建筑类
public abstract class Building extends Place{
public abstract void showArea();
}
戏剧课
public class Theater extends Building{
@Override
public void showArea() {
System.out.println("Theater area : " );
}
@Override
public void showEvents() {
System.out.println("Events ready to be hosted !!");
}
}
主类
public class CodingtonDemo {
public static void main(String[] args) {
Theater theater = new Theater();
theater.showArea();
theater.showEvents();
}
}
控制台中的预期结果:
剧院面积:6000
活动准备就绪!!
我目前的结果:
剧院区:[尚无价值]
活动准备就绪!!
【问题讨论】:
-
为什么在你的UML图中所有的成员都是用斜体写的?图中没有说明 Place 和 Building 是抽象的。
showEVents: void在操作室中是非法的。在全球范围内,您的图表无效 -
@bruno UML 中没有说明 Place 和 Building 是抽象的,但 showEvents() 方法必须是抽象的。如果我错了,请纠正我,但是我无法在具体类中实现抽象方法。另外,你能告诉我更多关于 showEvents:void 是如何非法的吗?
-
showEvents() method must be abstract:为什么?在图中没有任何说明,它是斜体的事实没有任何价值,因为正如我所说的那样,all 包括属性的成员都是斜体的,这是非法的。I can't implement abstract methods in concrete classes:根据定义,没有实现抽象操作,否则它不是抽象的。你可以随意混合,抽象类可以有抽象和非抽象操作。 ... -
...您在回答
The UML was given to me as an exercise thus I have no control to how it was made的备注中说,联系为您提供图表练习的人以传输错误并要求提供有效图表,事实上该人是老师什么都不改变。 -
@bruno 感谢您花时间解释这一切。我将尝试向进行图表练习的人询问有关 UML 错误的信息。
标签: java inheritance uml abstract-class