【发布时间】:2021-07-29 15:12:50
【问题描述】:
这是我的代码:
interface Dwelling {
int getNumberOfOccupants();
}
public class House extends Building implements Dwelling {
@Override
public int getNumberOfOccupants() {
return occupants;
}
}
public class ApartmentBuilding extends HighRise implements Dwelling{
@Override
public int getNumberOfOccupants() {
totalOccupants = numberOfFloors * occupantsPerFloor;
return totalOccupants;
}
}
public class Village extends Building{
public int getPopulation(){
size = House.getNumberOfOccupants() + ApartmentBuilding.getNumberOfOccupants();
return size;
}
}
当我尝试从 House 和 ApartmentBuilding 类中添加 getNumberOfOccupants() 方法时,我得到一个非静态方法“getNumberOfOccupants()”不能从静态上下文错误中引用。我不确定如何添加这些方法来生成 getPopulation() 方法
【问题讨论】:
-
你不能,因为那些方法不是
static。它们也不应该如此,因为房屋和其他建筑物的关键属性各不相同,这些属性并不特定于一个阶级。此外,您的人口方法实施(尝试)表明您有一个拥有一所房子和一套公寓的村庄 - 这不是有点奇怪吗? -
好吧,对不起,我正在学习 java,但我不确定如何获取所有建筑物的总人口数?
-
Village extends Building没有多大意义。村庄不是更具体的单体建筑类型。村庄是包含建筑物的东西,但不是建筑物本身。因此,您的 Village 类不应扩展 building 类,但能够保存其构成的建筑物列表/数组。 -
在编写代码(最后一件事)之前,您需要更多地考虑您的设计。想一想 - 什么是村庄?
标签: java polymorphism abstract-class