У меня есть следующий java суперкласс с конструктором, геттерами и сеттерами для каждого атрибута:
public class vehicle {
int vehicleId;
public vehicle(int vehicleId) {
super();
this.vehicleId = vehicleId;
}
public int getVehicleId() {
return vehicleId;
}
public void setVehicleId(int vehicleId) {
this.vehicleId = vehicleId;
}
И подкласс автомобиля, который расширяет суперкласс автомобиля и имеет несколько уникальных атрибутов:
public class car extends vehicle{
private String wheels;
//constructor
public car( int vehicleId, String wheels) {
super(vehicleId);
this.wheels = wheels;
}
//getters and setters
public int getWheels() {
return wheels;
}
public void setWheels(int wheels) {
this.wheels = wheels;
}
Я создаю новый связанный список объектов транспортного средства и добавляю к нему новый объект автомобиля:
LinkedList<vehicle> gbm = new LinkedList<vehicle>();
car car = new car(0, "");
car.setVehicleId(1);
car.setWheels("alloy");
gbm.add(car);
Я могу изменить любой из атрибутов, принадлежащих суперклассу транспортного средства, с помощью функции вот так:
public static void editVehicleId(int vid, int vehicleId) {
for (vehicle obj : gbm) {
if (obj.vehicleId == vid) {
obj.setVehicleId(vehicleId);
} else {
System.out.println("No matching vehicle Id found - please check input");
}
}
}
Но когда я пытаюсь создать аналогичную функцию для изменения одного из атрибутов подкласса, я получаю эту ошибку: «метод setWheels (int) не определен для типа транспортного средства».
public static void editWheels(int vid, int wheels) {
for (vehicle obj : gbm) {
if (obj.vehicleId == vid) {
obj.setWheels(wheels);
} else {
System.out.println("No matching vehicle Id found - please check input");
}
}
}
Может кто-нибудь сказать мне, как отредактировать один из атрибутов подкласса c?