Прежде всего ваш конструктор в классе 'Vehicule' неверен
public Vehicle(String Modelname, double dailyCost) {
this.modelName = modelName;
this.dailyCost = dailyCost;
}
Параметр ' String Modelname ' записан с большой буквы M, но имя модели ' ', которое вы даете' this.modelname
', на самом деле является свойством класса, как будто вы это делаете: this.modelName=this.modelName
Это означает, что вы не добавляете к нему ничего нового
Во-вторых, зачем ваш класс 'Hire' будет абстрактным, если вы хотите его использовать? абстрактный класс не может быть инициализирован.
Я также обнаружил две основные ошибки в этом классе:
private Vehicle aVehicle = new Vehicle(String modelName, double dailyCost);
Здесь вы должны сначала объявить String 'modelname' и double 'dailyCost' и присвоить им значение перед созданием вашего объекта aVehicle.
-Или просто сделайте это вместо: Vehicle aVehicle = new Vehicle("Volkswagen",42069);
ваши геттеры и сеттеры для Vehicule неверны, потому что вы указали свойство Vehicle как
aVehicle с буквой 'a', а не '
Vehicule '
Вместо этого ваши геттеры и сеттеры должны быть такими:
public String getaVehicle() {
return aVehicle;
}
//Setter for model vehicle
public void setaVehicle(Vehicle aVehicle) {
this.aVehicle = aVehicle;
}
Наконец, ваш метод toString в этом классе неверен из-за той же ошибки инициализации, вы не объявили modelName и dailycost объектов в вашем классе Hire . Теперь, если вы хотите наследование между двумя классами, вы должны сделать следующее:
public class Hire extends Vehicle {
...
}
Это наследование означает, что ваш дочерний класс 'Нанять' класс будет ' унаследовать 'все атрибуты и методы от вашего родительского класса Vehicle , поэтому вам не придется снова объявлять атрибуты modelname и dailycost в классе Hire, потому что они уже присутствуют в класс вашего автомобиля.