私はスーパークラスを持っています、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手動で文字列として渡さずに、フィールドをクラス名に設定するにはどうすればよいですか?