私はVehicleクラスを持っています。車から、私はCarクラス(そしてBus、Bike ..のようないくつかのもの)を拡張します。今私のアプリケーションでは、ユーザーがどのような種類の車両で作業したいのか分かりません。そこで私はVehicleオブジェクトを作成し、後で適切なオブジェクト(Car、Bus、...)を作成します。その後、私はいくつかの車の機能を呼びたい - しかし、私はそれに到達することはできません。どうして?拡張クラスへのアクセス方法 'function?
Vehicle vehicle=null;
. . .
vehicle=new Car();
vehicle.someMethodFromCar(); //can't reach it
キャストせずにこれを行う方法はありますか?抽象化を使用するかスーパークラスを呼び出すか? –
ありがとう、これは私が必要としていたものです。 –
'someMethodFromCar'は' Car'でのみ定義され、必要なメソッドです。したがって、抽象化は助けにはなりません。なぜなら、VehicleクラスのCar-methodsを宣言したり実装したりしたくないからです(他のすべてのサブタイプに実装を提供することを強制...) –