Будучи static
или не имеют никакой прямой связи с супер и субтропических классов.
static
члены являются членами, относящимися к class
, а не конкретным object
.
Для создания номера класса, вы можете сделать что-то вроде этого:
class Room{ //can be declared as abstract
int cost;
public int getCost(){return cost;}
}
class largeRoom extends Room{
//inherit cost from Room class
}
class smallRoom extends Room{
//inherit cost from Room class
}
написать метод mostExpensive(), который скажет мне, какой номер был mostExpensive(), чтобы построить.
Этот метод должен сравнивать коллекцию объектов Комнаты, поэтому вряд ли вы будете создавать этот метод в самих классах комнаты.
Если вы использовали ArrayList для хранения коллекции комнат.
public Room mostExpensive(ArrayList<Room> allRooms)
{
Room mostExpensiveRoom;
int max = 0;
for(int x=0; x<allRooms.size(); x++)
if(allRooms.get(x).getCost() > max){
mostExpensiveRoom = allRooms.get(x);
max = allRooms.get(x).getCost();}
return mostExpensiveRoom;
}
Это показывает, как вы можете использовать метод mostExpensive()
.
public static void main(String[] args){
List<Room> allRooms = new ArrayList<Room>();
allRooms.add(new smallRoom());
allRooms.add(new largeRoom());
Room mostExpensiveRoom = mostExpensive(allRooms);
}
Если вы не хотите, чтобы перебирать коллекцию ручного поиска для самых дорогой комнаты, вы можете позволить классу номера реализовать comparable
и отсортировать вашу коллекцию комнаты затем получить первую/последний запись из отсортированной коллекции. Я сомневаюсь, что вы это сделаете, но это одна из альтернатив.
Но SmallRoom и LargeRoom - это, безусловно, экземпляры комнаты. – laune
В этом случае они являются подклассами комнаты. Номер является абстрактным классом – aaa
И что? Они все еще являются экземплярами Room – laune