私はかなり新しいJavaであり、継承を使用するプロジェクトに取り組んでいます。現在、3つの異なるクラスがあります - 上位レベルCar
クラス、中レベルCarPart
クラス、および下位レベルEngine
クラスは、CarPartクラスを継承します。私はEngineクラスが単にコンポーネントの動作/状態を表すことを望みます。私は、CarPartクラスを汎用的にして、複数の異なるパーツを扱うようにしたい(今はエンジンをセットアップしただけです)。今では、カーパーツを表すすべてのクラス(エンジンなど)は、「CarPart」というスーパークラスから継承したいと考えています。 CarPartクラスには、すべてのタイプの自動車部品(状態や診断レポートを印刷する機能など)で共有されるすべての状態と動作があります。以下はJavaで継承を使用するクラス
私は一部は以下
public class Car {
Engine engine;
public Car() {
engine = new Engine();
}
public void run() {
this.engine.printStatus();
}
}
オブジェクトを作成できるようにしたい私の車のクラスは私のCarPartクラスは、私は車の部品のいずれかのタイプに汎用的になりたいと今の私はちょうど欲しいものですパーツの状態を印刷します。以下は
public class CarPart {
private Object object;
public String printState(Object object) {
System.out.println("The status is "+object.getState());
}
}
私のエンジンクラスのコードです:
public class Engine extends CarPart{
private String state;
public String getState() {
if(!state.equals(null)) {
System.out.println("The engine is "+state);
} else {
this.state = "off";
System.out.println("The engine is off");
}
return state;
}
public void setState(String engineState) {
this.state = engineState;
}
}
は、私はこの問題はダウンキャストと子クラスのメソッドへのアクセスを持っていない親クラスに関係していると思います - しかし、私はよステータスレポートを正しい方法で印刷する方法については不明です。どんなアドバイスも大歓迎です!あなたはObject
参照の上Engine
の方法を使用し、第4行で
public class CarPart {
private Object object;
public String printState(Object object) {
System.out.println("The status is "+object.getState());
}
}
:あなたのエラーメッセージ以来
'public String printState(Object object)' ANYオブジェクト(String、Integer、ArrayList、John3136sSuperDuperSwissArmyKnifeClassOfPain)の状態を出力できますか? – John3136
@ John3136申し訳ありません、それを忘れました。いいえ、CarPartからオブジェクトの状態を出力する方法がわかりません。 "getState()はObject型のために未定義です"というエラーが表示されます。 – kdubs
CarPartとEngineにはコンストラクタが必要です。 –