gpt4 book ai didi

java - 如果子类没有构造函数,如何通过第三方类(不扩展抽象类)管理抽象类的子类?

转载 作者:行者123 更新时间:2023-11-30 12:04:38 24 4
gpt4 key购买 nike

我真的被这个任务弄糊涂了。知道抽象类的实例可以通过使用它们的子类来管理,考虑一下:我得到了一个 UML,它说我有一个抽象类 Room,它有一个带参数的构造函数和一个具体方法。 Room 还包括私有(private)字段 lengthwidth。类 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
}
}

或者你可以这样做:

Can we instantiate an abstract class directly?

关于java - 如果子类没有构造函数,如何通过第三方类(不扩展抽象类)管理抽象类的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com