私はスーパークラスを持っています、Vehicle
それはサブクラスPlane
とCar
です。final string name;
車両は、コンストラクターからのみ設定できるフィールドを持つクラスから拡張されます。
このフィールドをクラスの名前に設定したいので、Carの名前はCar、PlaneはPlane、VehicleはVehicleになります。私が最初に考えたのは:
public Vehicle() {
super(getClass().getSimpleName()); //returns Car, Plane or Vehicle (Subclass' name)
}
しかし、これは私にエラーを与えます:Cannot refer to an instance method while explicitly invoking a constructor
。
name
手動で文字列として渡さずに、フィールドをクラス名に設定するにはどうすればよいですか?