2013-06-09 4 views
-5

Учитывая эти классы:Java: Использование ArrayList итерировать

public class Car { 

private int registrationNumber; 
private String automaker; 
private String colour; 
private int numberOfSeats; 

public Car { 
setRegistrationNumber(int regNum); 
setAutomaker(String automakerName); 
setColour(String carColour); 
setNumberOfSeats(int seats); 
} 

public int getRegistrationNumber() { 
return registrationNumber; 
} 

public void setRegistrationNumber(int regNum) { 
registrationNumber = regNum; 
} 

public String getAutomaker() { 
return automaker; 
} 

public void setAutomaker(String automakerName) { 
automaker = automakerName; 
} 

public String getColour() { 
return colour; 
} 

public void setColour(String carColour) { 
colour = carColour; 
} 

public int getNumberOfSeats() { 
return numberOfSeats; 
} 

public void setNumberOfSeats(int seats) { 
numberOfSeats = seats; 
} 
} 

public class Bicycle { 

private String colour; 
private int height; // The height of the bike measured in centimeters 

public Bicycle { 
setColour(String bicycleColour); 
setHeight(int bicycleHeight); 
} 

public String getColour() { 
return colour; 
} 

public void setColour(String bicycleColour) { 
colour = bicycleColour; 
} 

public int getHeight() { 
return height; 
} 

public void setHeight(int bicycleHeight) { 
height = bicycleHeight; 
} 
} 

import java.util.ArrayList; 
public class CarCollection { 

private ArrayList<Car> cars; 

public CarCollection { 
cars = new ArrayList<Car>(); 
} 

public int getNumberOfSeatsInCollection() { 
for(Car numberOfSeats : cars) { 
return numberOfSeats; 
} 
} 
} 

Теперь мне нужна помощь с этой задачей: Создать класс VehicleCollection. Автомобиль может быть либо автомобилем, либо велосипедом, но в будущем могут быть добавлены другие типы транспортных средств. VehicleCollection должен иметь метод, который возвращает общее количество мест в коллекции. Велосипед всегда имеет одно место.

Может кто-нибудь, пожалуйста, покажите мне, как они решат эту задачу?

+1

Вы не получили много ответов, потому что это очевидно домашнее задание вопрос, что он не похож на вас из много усилий ... стараюсь работать этот материал для сам. Как только вы напишете код и застрянете, обратитесь за помощью. Если вы просто скопируете то, что другие люди скажут вам писать, у вас будет плохое время. –

ответ

1
public abstract class Vehicle { 
    public abstract int getNumberOfSeats(); 
} 

Позвольте всему вашему автомобилю расширить транспортное средство. затем реализует метод getNumberOfSeats

теперь

List<Vehicle> vehicleList=new ArrayList<>(); 

public int getNumberOfSeatsInCollection() { 
int totalSeats=0' 
for(vehicle v: vehicleList) { 
totalSeats=totalSeats+v.getNumberOfSeats(); 
} 
return totalSeats; 
} 
+1

Это должно быть 'public abstract class Vehicle' – fge

+0

yep, но декларирование одного абстрактного метода делает класс абстрактным .. –

+1

№ Это ошибка компилятора, чтобы сделать это! У вас нет абстрактных методов в не абстрактных классах. – fge

0

Лучший способ заключается в создании Vehicle в этом классе создать veriable SeatsNumberInterface (как интерфейс), а также два класса, который реализует этот интерфейс пример BikeSeats и CarSeats. SeatsNumberInterface должно иметь количество меток и класс, которые наследуют этот интерфейс (BikeSeats и CarSeats), этот метод реализует. Когда вы создаете новый автомобиль, вы устанавливаете свой интерфейс CarSeatInterface. Это шаблон дизайна стратегии.

класс автомобиля

public class Vehicle{ 
    private interface SeatsNumberInterface seats; 

... 

public void setSeatsNumberInterface(SeatsNumberInterface seats){ 
    thi.seats = seats; 
} 

public getSeatNumber(){ 
    seats.getSeatsNumber(); 
} 
} 

мест интерфейс

public interface SeatsNumberInterface{ 
    public int getSeatsNumber(); 
} 

BikeSeats класс

public class BikeSeats implements SeatsNumberInterface{ 
    public int getSeatsNumber(){ 
     return 1; 
} 
} 

велосипед класса

public Bike extends Vehicle{ 
... 
} 

Как создать класс

Vehicle vehicle = new Bike(); 
vehicle.setSeatsNumberInterface(new BikeSeats); 
System.out.println("Seats number: " + vehicle.getSeatNumber); 
Смежные вопросы