Я имитирую заявку на парковку. И у меня есть класс Vehicle
, который является абстрактным и расширены конкретными классами, такими как Car
, Truck
и т. Д. У меня есть переменная parkingFare
, которая для каждого подкласса Vehicle
будет создана как переменная класса и окончательная, чтобы все экземпляры этого конкретного класса могли использовать одинаковое значение. например, если я установил parkingFare
для Car
как 2 доллара, он должен быть одинаковым для всех экземпляров Car
. Проблема в том, что я не могу получить доступ к этой переменной в моем конкретном классе в качестве переменной класса.Как создать статическую переменную суперкласса в подклассе как final
public abstract class Vehicle {
String plateNo;
LocalTime startTime;
static int parkingFare;
public abstract int getFare();
public abstract String getPlateNo();
public abstract LocalTime getParkedTime();
}
public class Car extends Vehicle {
final parkingFare = 2; // how I want to instantiate it.
public Car(String plateNo){
this.plateNo = plateNo;
this.startTime = LocalTime.now();
}
@Override
public LocalTime getParkedTime(){
return startTime;
}
@Override
public String getPlateNo(){
return plateNo;
}
@Overrid
public int getFare(){
return parkingFare;
}
}
Похоже, вы объявляете int как метод. 'public abstract int getFare();' Вы можете сделать 'public abstract int getFare1 = getFare();' – WonderWorld
@WonderWorld 'getFare' метод не является моей проблемой на данный момент. его инициализация статической переменной в подклассе – Abhay
Я имею в виду, что вы не можете писать 'public abstract int getFare()' afaik. '()' означает его метод. (я знаю, что это не проблема на данный момент, просто говорю.) :) – WonderWorld