java передать значение подкласса в суперкласс

Работаю над тестированием Junit, столкнулся с проблемой.

У меня есть суперкласс транспортного средства, а также подклассы мотоциклов и автомобилей. Мне нужно использовать методы в суперклассе для получения информации в подклассе (идентификатор строки, прибытие int)

public class MotorCycle extends Vehicle {

public String bikeID;
public int arrivalTimeA;

public MotorCycle(String vehID, int arrivalTime) throws VehicleException {

    super(bikeID, arrivalTimeA);

    bikeID = vehID;
    arrivalTimeA = arrivalTime;

С каким подклассом я работаю, и я хочу использовать методы из транспортного средства суперкласса для получения информации от мотоцикла.

public Vehicle(String vehID,int arrivalTime) throws VehicleException  {

    vehicleID = vehID;
    arrivalTimeA = arrivalTime;

    if (arrivalTime <=0){
        throw new VehicleException("Vehicle");
    }


    public String getVehID() {

    return vehicleID;
}

Пробовал использовать super(vehID, прибытияTime) в подклассе, но я должен сделать переменные статическими, что не подходит для этой программы.

Всякий раз, когда я добавляю super(vehID, прибытияTime), я продолжаю получать сообщения об ошибках «Сделать переменные статическими», если я этого не сделаю, он просто не работает должным образом и дает сбой.

Что у меня есть для моего теста:

    @Test
public void testGetVehID() throws VehicleException {
    moto = new MotorCycle("b1234", 600);
    veh = moto;
    String id = veh.getVehID();
    assertEquals("b1234", id);// TODO
}

veh — это просто пустой объект класса Vehicle.

У меня проблемы с доступом к информации. Каждый раз, когда я запускаю этот тест или что-то подобное, значение равно 0 для int или null для строк.


person Andrejs Bicevskis    schedule 21.05.2014    source источник
comment
Зачем вам нужно делать переменную статической для super(vehID, прибытияTime)?   -  person Hirak    schedule 21.05.2014
comment
ваш вопрос связан с этим   -  person earthmover    schedule 21.05.2014
comment
код в порядке, в чем проблема?   -  person Taher Khorshidi    schedule 21.05.2014
comment
Когда я пытаюсь протестировать его, мотоцикл не передает значения транспортному средству.   -  person Andrejs Bicevskis    schedule 21.05.2014


Ответы (2)


Я думаю, вы хотите использовать конструктор для передачи информации вместо метода. здесь, если вы передадите {super(vehID, прибытияTime);}

к вашему родительскому классу, тогда это может решить вашу проблему. Пожалуйста, дайте мне знать, работает ли это для вас или нет.

person Amit Kathpal    schedule 21.05.2014
comment
Будет ли это в конструкторе мотоциклов? - person Andrejs Bicevskis; 21.05.2014
comment
Это не работает. В нем говорится, что мне нужно сделать переменные статическими, что делает все остальные тесты неудачными. - person Andrejs Bicevskis; 21.05.2014

Единственная причина, по которой я могу придумать, почему вы получите эту инструкцию, заключается в том, что вы пытались вызвать конструктор суперкласса из конструктора подкласса, и это был не первый вызов. Вызов super() с аргументами конструктора должен быть простым, если перед ним нет никакого кода.

person lea    schedule 21.05.2014