私はクラスと継承という概念を初めて使い、少し混乱しているかもしれないと思います。私はMVCデザインパターンを使用しようとしているので、 "ベース"モデルクラスを作成すると、ビュークラスがあらゆる種類のモデルへの参照を受け入れることができるように、このモデルから他のすべてのモデルを継承できます。ここJavaのクラスと継承 - どうしたのですか?
public class SceneControl {
SceneView scMaze;
SceneView scOptions;
Model ms;
public SceneControl(ViewPanel view) {
this.view = view;
ms = new Maze(31, 20, 5);
SceneView scMaze = new SceneView(ms);
ms = new Options(20, 20, 20, 200, 20);
SceneView scOptions = new SceneView(ms);
...
と私の拡張モデルクラスの1つです:ここに私の試みです
public class Maze extends Model {
public int i;
public Maze(int cols, int rows, int ratio) {
super(cols, rows, ratio);
i=77; // a test- can I access this field from inside SceneView
}
}
しかしSceneView
内の余分なMaze
フィールドにアクセスしようとしたとき、私はコンパイルエラーに取得
public Model ms;
public SceneView(Model ms) {
this.ms = ms;
System.out.println(ms.i); //gives "connot be resolved or is not a field" error
...
私はオブジェクトがMaze
からModel
にダウンキャストされていると推測していますか?どのようにそれを私のビュークラスにModel
のように渡すことができますが、それでもまだ実際にはMaze
でしょうか?
あなたは 'Model'、ない' Maze'を持っています。 'Model'には' i'という名前の公開ファイルが含まれていません –
答えよりもRahter、私はMaze以外の別のModelサブクラスを渡そうとするとどうなると思いますか?フィールドiを定義しなかったか? –
こんにちは@ケビン、私は別のサブクラスを区別するために後でif()ステートメントを使用する予定だった...これは悪いOOPですか? –