作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我真的被这个任务弄糊涂了。知道抽象类的实例可以通过使用它们的子类来管理,考虑一下:我得到了一个 UML,它说我有一个抽象类 Room
,它有一个带参数的构造函数和一个具体方法。 Room
还包括私有(private)字段 length
和 width
。类 Flat
扩展了抽象类,但 Flat
没有构造函数。另一个名为 Building
的类用于通过数组 Room allRooms []
管理 Room
的所有对象。
public abstract class Room {
private float length;
private float width;
public Room(float length, float width) {
this.length = length;
this.width = width;
}
public calcSurface () {
return this.length * this.width;
}
}
public class Flat extends Room {
...
/* no constructor is intended here, not even methods are getting
overriden in here */
...
}
所以写完之后我觉得,除了extend Room
这两个类之间没有真正的联系...
public class Building {
public Room allRooms[];
...
public boolean addRoom (Room room) {
... // for loop
Room allRooms[i] = room; //so here are my passed object. but
since i can't instantiate an abstract class I usually would have
used the (sub)classes ==> = {new Flat(...)};
...
}
因为 Room
包含私有(private)字段并且是一个抽象类,如果我的类之间没有任何真正的联系,我真的无法弄清楚如何使用它们。
// method to calculate the surface of all rooms and flats
public float getSumOfRommsurface() {
}
public float getSurfaceOfFlats() {
}
那么:如何通过Building
访问Flat
,如果没有,如何实例化Flat
构造函数,抽象类中的构造函数除外。
但是,也许有一个我以前从未听说过的特殊的继承和关联概念,如果是的话,如果有人能用通俗易懂的英语向我解释一下,我会很高兴。
最佳答案
您能否分享您编写代码所依据的 UML 图或描述。
据我所知,由于以下原因,这在 java 中是不可能实现的:1) 如果您为父类创建了构造函数,那么子类必须具有如下构造函数:
public class Flat extends Room {
public Flat(float length, float width) {
super(length, width);
//some work
}
}
或者你可以这样做:
关于java - 如果子类没有构造函数,如何通过第三方类(不扩展抽象类)管理抽象类的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027484/
我是一名优秀的程序员,十分优秀!