Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

メンバの抽象化

 こんにちは。長文すいません。
 Javaでは現時点では処理が確定できない詳細未定メソッドを「アクセス修飾子 abstract 戻り値 メソッド名();」で抽象メソッドにでき、利用者にオーバーライドを強制させられるのですが、中に入れられる値を確定できない詳細未定のフィールドを抽象化することはできないのでしょうか。「アクセス修飾子 abstract 型 変数;」にしてもコンパイルエラーになってしまいます。どうすれば、抽象メソッドのように利用者にオーバーライドを強制できるのですか。
 自分は、Javaの入門書を1冊勉強し、わかりやすく開設しているサイトを見ながらシューティングゲームやアクションゲームのスプライトの実装ができるぐらいでしかないので、わかりやすくお願いします。

2

回答

3438

閲覧

2件の回答

評価

30

>すいません。
す「み」ません、だな。

>わかりやすくお願いします。
それは質問者が指定することではないよ。寄せられた回答を理解しようと勉強するのが、質問した人間のつとめだ。

「入れられる値を確定できない」フィールドと言うものは存在しない。
なぜなら、「オブジェクト指向」とは極論すれば「まずフィールドがある」ものだからだ。
つまり今現在そういうものが必要だと感じているのなら、アプローチが間違っている、ということになる。

そういうわけで、オブジェクト指向とはどういうものなのかを、勉強する必要がある。
abstractはそれを具現化するための1つの仕組みであり、「現時点では処理が確定できない」ときに使うものではない。

目標を持つのはいいことだが、概念や基礎の部分を先に固めておかないと、つまづいては質問を繰り返すことになる。
そして、質問の数の割には大して力が付かなかったりする。
大きなものを作るというところは否定しないが、小さなものから少しずつ、時間を掛けて積み上げていこう。
「急がば回れ」はプログラミングにも適用できる言葉だ。

評価

0

<質問者です>
すみません。自己解決しました。分かりにくいかもしれませんが解説です。

単にフィールドを宣言し、コンストラクタに仮引数を、そして仮引数とフィールドをイコールでつなぐだけでした。そうすれば継承時に子クラスで
1.子クラスのコンストラクタにも同じ仮引数をつけないといけない
2.superというキーワードで親クラスのコンストラクタに値を代入する
のどちらかをしないといけない状態を作ることができたので、抽象フィールド的な存在を作ることができました。

あと、質問の時の「解説」の字が「開設」になっていました。失礼しました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。