• 締切済み

JAVAのコンストラクタ、継承の問題を回答頼む

commonパッケージにHeroクラスを継承した、SuperHeroクラスを作成してください * ●HP, POWER, ENDURANCEはHeroと同じでそれぞれ、(25, 10, 7) * フィールド * item : Item * メソッド * attackメソッドをオーバーライドし、 * powerフィールドの値に加えて、itemフィールドのadditionalDamage分を加算した値を返す * itemフィールドのアクセサ */ public static void main(String[] args) { // TODO SuperHeroインスタンスとSlimeインスタンスを作成し、それぞれの名前に"勇者(装備あり)", "スライム"を設定してください // TODO Itemクラスのインスタンスを作成し、("こんぼう", 5)をコンストラクタの引数にしてください // TODO SuperHeroインスンタンスのitemフィールドに作成したitemインスタンスをセットしてください // TODO SuperHeroインスンタンスのattackメソッドを呼び出して、戻り値を出力してください // ※ 15と出力されれば正解

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • maiko04
  • ベストアンサー率17% (345/1956)
回答No.1

プログラムの作成依頼はほかへお願いしてください。

関連するQ&A

  • 継承・実装の関係で悩んでいます。

    継承・実装の関係について悩んでいます。 ここでは、アクセス制御を考えずに、インスタンスかstaticかabstract(ここではabstract final staticやabstract classのこと)の違いで、どう継承するのか考えています。 // 継承 はメソッドのオーバーライドのことを考えます。(オーバーロードは考えない) クラスAからクラスBでオーバーライドしたメソッドは、 クラスCでさらにオーバーライドできるのでしょうか? クラスCが クラスBのクラスAからオーバーライドしたメソッド をクラスBのメソッドとして見たときに、オーバーライドすることは可能なのでしょうか? クラスA │ インスタンスフィールドA │ staticフィールドA │ │ クラスA() { } │ │ インスタンスメソッドA () { } │ staticメソッドB() { } ↓ クラスB extends クラスA │ インスタンスフィールドA // 継承 │ インスタンスフィールドB │ staticフィールドB │ │ サブクラス1() { } // コンストラクタは継承しない、super()で呼び出す │ │ インスタンスメソッドA () { } // 継承 │ │ インスタンスメソッドB () { } │ staticメソッドB () { } ↓ クラスC extends クラスB implements インタフェースD, ... ↑ インスタンスフィールドA // クラスBのフィールドを継承 │ インスタンスフィールドB // クラスBのフィールドを継承 │ インスタンスフィールドC │ staticフィールドC │ │ サブクラス2() { } │ │ インスタンスメソッドA () { } // クラスBのメソッドを継承 │ インスタンスメソッドB () { } // クラスBのメソッドを継承 │ インスタンスメソッドD () { } // インタフェースDのメソッドを実装 │ インスタンスメソッドE () { } // インタフェースDのメソッドを実装 │ │ │ インスタンスメソッドC () { } │ staticメソッドC() { } │ interface インタフェースD extends インタフェースE ↑ │ staticフィールドD // public static final │ │ インスタンスメソッドD() { } // public abstract │ インスタンスメソッドE() { } // 継承 │ interface インタフェースE staticフィールドE // public static final インスタンスメソッドE() { } // public abstract

    • ベストアンサー
    • Java
  • 継承について

    下の質問の回答、間違ってませんか? -------------------------------------------- 親クラスのフィールドをメソッドを全て継承することになります。よって、サブクラス2は、サブクラス1とスーパークラスのメンバーを全て持つことになります。サブクラス2をインスタンス化すると、サブクラス1とスーパークラスが全てインスタンス化(コンピューターのメモリ上等に配置)されます。 ただ、可視性というものがあり、サブクラスから親クラスのメンバーを直接取り扱えない場合があります。privateや可視性修飾子無しの場合、サブクラスから直接取り扱えません。ただ、継承はされているので、インスタンスとしては存在します。例えば、 class スーパークラス{ private int abc; public int getAbc(){ return this.abc; } というクラスがあり、これを継承したサブクラスがあったとします。 サブクラスからは、privateなメンバー変数abcは直接取り扱うことができません。ただ、publicなgetAbcメソッドはサブクラスから取り扱えます。これで何が分かるかといいますと、privateなメンバーでもサブクラスに継承されるのです。単に可視性の問題で直接取り扱えないだけなのです。 また、オーバーライドされたメソッドがあったとしても、super.メソッド()で親のメソッドも呼べますので、これも継承されているのです。

  • java 継承

    こんにちは。 javaの問題なのですが、問題文が理解できなかったので質問させていただきます。 問題文 Ex54で作成したRectangleクラスを継承するPlaceRectangleクラスを作成する Ex54 import java.io.*; class Rectangle{ private int width; private int height; public Rectangle(){ width=0; height=0; } public Rectangle(int w, int h){ width=w; height=h; } public int getArea(){ return width*height; } } class Ex54{ public static void main(String args[])throws IOException{ BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); int num=0; while(num < 2){ System.out.print(">"); String wid = br.readLine(); System.out.print(">"); String hei = br.readLine(); int num1 = Integer.parseInt(wid); int num2 = Integer.parseInt(hei); Rectangle rectangle1 = new Rectangle(num1, num2); System.out.println("インスタンスr" + (num+1) + "の面積は" + rectangle1.getArea()); num++; } } } --------------------------------------------------------------- PlacedRectangleクラス 四角形の位置をx座標y座標で表す。 長方形の左端を示しx座標は右に大きくy軸は下に大きくなる。 ・次の三つのコンストラクタを持つ (1)引数なし (2)位置の引数付き (3)位置と大きさの引数付き いづれのコンストラクタも位置のセットはsetLocationメソッドを実行する 大きさのセットはスーパークラスのコンストラクタを呼ぶ (コンストラクタで値を設定しているのになぜ再設定(位置のセット、大きさのセット)する必要があるのか分かりません。) ・setLocationメソッドは位置をセットする mainメソッドから次の操作をする 1引数無しでPalacedRectangleのインスタンスaを作成 2引数12と34でPlacedRectangleのインスタンスbを作成 3引数31と41と59と26でPlacedRectangleのインスタンスcを作成 1、2、3ともそれぞれのインスタンスの位置と面積を表示する 実行例 インスタンスaの面積は1534 位置は(12,13)です。 UML図 PlacedRectangle ----------------- -x:int -y:int ----------------- +PlacedRectangle() +PlacedRectangle(x:int,y:int) +PlacedRectangle(x:int,y:int,width:int,height:int) +setLocation(x:int,y:int):void 「疑問点」 コンストラクタで値を設定しているのになぜ再設定(位置のセット、大きさのセット)する必要があるのか分かりません。 main文のwhile(num < 2){というところをスッキリさせたい(処理が2回しかないため)何かよい方法はないでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Java
  • javaについてです。

    このプログラミング全部を教えて下さい。 staticでないものでお願いします。 ●CustomerManagerクラスに以下のフィールドを作成する  ・他のクラスからアクセスできない長さ5のCustomerCardの配列  ・整数型フィールド(名称:index、初期値0) ●CustomerManagerクラスに以下のメソッドを作成する   ・メソッド1  メソッド名:addCustomerCard  引数1:整数型  引数2:文字列型  動作:    ・配列のindex番目にCustomerCardインスタンスを作成    ・作ったインスタンスに引数の2つを設定    ・indexを1増やす ・メソッド2  メソッド名:printAllInfo  引数なし  動作:   配列にいれられた全てのCustomerCardの情報を表示する ●mainメソッドを以下のように修正する  addCustomerCardメソッドを使って以下の情報を登録する     ID = 1 , 名前 = "山田一郎"   ID = 2 , 名前 = "鈴木太郎"   ID = 3 , 名前 = "田中次郎"  printAllInfoメソッドを使って登録された全ての情報を表示する 以上よろしくお願い致します。

    • ベストアンサー
    • Java
  • java のメソッドの使い方について

    現在のjavaの勉強しております。 そこでフィールドについてどうしてもわからないことがあったので質問させていただきます。 他クラスのメソッドを利用したい時、通常インスタンス化を行いますが、下記のようにフィールドに宣言しても、他クラスのメソッドを利用できることに疑問を感じました。 public class Test{ public String show(){     ~~   return null; } } //Testクラスのshowメソッドを呼び出します public class Test2{ private Test test_; public String triaezu(){    String str = test_.show(); ~~   … このようにフィールドにもつ呼び出しとインスタンス化をして呼び出す方式とは一体何が違うのでしょうか? プログラムの先輩方、基礎的なことすぎて申し訳ないのですが、どうかご教授ください。

    • ベストアンサー
    • Java
  • Javaの課題が全くわかりません。

    この前学校からJavaの課題が出まして、全くわかりません。 <テストクラス>(ファイル名:Test.java) <フィールド> なし <メソッド> 1.メインメソッド 「ここからはテストクラスの流れを書きます」 ・アドレスサーチクラスを生成 ・アドレスサーチクラスのInitialize()メソッドを呼ぶ ・アドレスサーチクラスのSearchName()メソッドを呼ぶ ・検索結果を表示する <アドレスサーチクラス>(ファイル名:AddressSearch.java) <フィールド> 1.アドレス配列(3000個分) <メソッド> 2.住所録ファイル入力設定 (メソッド名) public void Initialize() 「ここからはテストクラスの流れを書きます」 ・住所録ファイルから1行目入力 ・1行を各項目に分解 ・アドレスクラスのインスタンスを生成 ・アドレスクラスのインスタンスに分解した各項目を設定 ・アドレス配列にインスタンスを格納 3.氏名検索 (メソッド名) public Address SearchName(String name) 「ここからはテストクラスの流れを書きます」 ・アドレス配列から氏名を探す ・一致した氏名のインスタンスを戻す  一致しない場合、nullを返す 長くなりました。このような条件でプログラムを作るのは私にはあまりわかりませんでした。googleなどで検索してもあまり良い情報がありません。もしこの問題が解ける方がいらっしゃるなら、ぜひアドバイスやプログラムなどを教えてくれたらありがたいです。

  • Java 静的メソッドとインスタンスメソッド

    静的メソッドとインスタンスメソッドの使い分けがよくわかりません。 私の認識は 静的メソッド:インスタンスメンバ変数を参照する必要がない処理 インスタンスメソッド:インスタンスメンバ変数を参照して行う処理 と思っています。 よって、例えばDAOを作成する場合、select、update、insertを実行するメソッドを作成しますが、これらはクラスのインスタンスメンバ変数を参照する必要がないので静的メソッドにするべきだと思っています。 しかし、本やネットのDAOのサンプルプログラムはインスタンスメソッドで作成されています。 これらは、private static String の変数(SQL文が記述されている)を参照していますが、インスタンスメンバ変数は参照していません。 なぜselect、update、insertのメソッドをインスタンスメソッドにする必要があるのかわかりません。 静的メソッドとインスタンスメソッドの使い分けの基準を教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 継承について

    みなさま、どうかお知恵を貸して下さい。 javaを勉強中で、本を読みながら試しに動かしています。 現在、実現したい動作が実現可能かどうかを調べているところです。 そのため、環境やバージョン等は決まっておりません。 むしろ、実現可能な環境やバージョンがあれば、教えてください。 実現したい機能ーーーーーーーーーーーー 親クラスAにメンバーとメソッドを定義します。 Aを継承する子クラスBを定義します。 プログラム中で、A、Bのインスタンスを生成します。 そして、A、Bを継承するCのインスタンスを生成したいのです。 Cのメンバーやメソッドは、Bと同様のものです。 この場合、BのクラスからCのようなインスタンスを作成することは、可能なのでしょうか? ・・・Cを定義していないので、おそらく不可能かと思います。 やはりこういった場合、Aを継承しているBを継承するCクラスを定義しておく必要があると考えています。 では、Cを継承するD,Dを継承するE・・・というように、いくつ必要になるかわからない場合、最大数分継承したクラスを用意すべきでしょうか。 なぜ、そうしたいかというと、組織図のようなものを作成したいのですが、組織図を構成する人数は、ユーザーの任意としたいのです。 継承したクラスを用いれば、そのまま組織図の体系を表現できる気がしました。 質問が大雑把になってしまい、申し訳ないのですが、お力を貸していただければ幸いです。

    • ベストアンサー
    • Java
  • 継承について(長文です)

    いつもお世話になっています。現在、継承についての練習問題を解いているのですがわからないことがあるので質問させていただきます。 問題は、「自己紹介メソッド(抽象メソッド)を持つIntroduceクラスを作成し、そのクラスを継承してFistsNameクラス、FullNameクラス、IncludeAgeクラスを作成しなさい。三つのサブクラスのインスタンスを混合して配列に保持し自己紹介をしなさい」というものです。 それぞれのクラスはコマンドライン引数で名字(引数一つ)だけ、フルネーム(引数二つ)、フルネームと年齢(引数三つ)と3種類の引数を入力することによって適切なメソッドが呼び出されるということです。(わかりにくい文章ですいません。例えばヤマダと入力すればFirstNameクラスの自己紹介メソッドが呼び出されてヤマダと表示させたいのです)引数をサブクラスに渡さないと行けませんが、まずコンストラクタで引数をサブクラスに渡す場合は引数を一つ(もしくは二つ)しか指定しなかったときはフルネームとフルネーム+年齢のクラスでコンパイルエラー(ArrayIndexOutOfBoundsException)が出ます(これは理解することが出来ます)次にメソッドで渡す場合はシグネチャが異なるのでオーバーライドされずこちらもコンパイルエラーとなります。この他に引数をサブクラスに渡す方法はあるのでしょうか? わかりにくい文章になってしまいましたが、要するに三つのサブクラスをインスタンス化しその後、引数の個数により適切なサブクラスのメソッドが呼び出され引数を連結して表示させたいのです。このようなことは実現できないのでしょうか?if節によって引数の個数で場合分けなどをしないといけないのでしょうか?質問文がわかりにくければ補足させていただきます。よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaの応用問題で

    以下のプログラムがさっぱりわかりません。 全ての値が0の2次元配列を,以下のルールに基づいて全て1にするゲームTurnAllPanels.javaを作成する。ルール:ある座標を指定すると,指定した座標とその上下左右の座標について,その値が0ならば1,1ならば0に交換する。プログラムは以下の仕様を満たす。 1,int型2次元配列のフィールドboard を持つ。これがこのゲームの盤となる。 2,盤の行と列の大きさを保持するint型のフィールド、rowMaxとcolumnMaxを持つ。 3,board の内容を、次のスライドで示す形式で表示できるメソッドshowBoard() を持つ。 4,指定された座標位置の配列の値が0ならば1,1ならば0に交換するメソッドturnOverを持つ。 5,指定された座標位置の配列の値とその上下左右の値を、turnOverを用いてひっくり返すメソッドturnPlaceSettingを持つ。ただし指定された座標位置がboard の端の場合は、その上下左右の内のどれかが無いので、場合分けが必要。 6,終了条件(全ての値が1かどうか)をチェックするメソッドcheckBoard() を持つ。 7,mainメソッドでは、board の配列の縦横の大きさを入力させ,それぞれcolumnMax,rowMaxとして、これらを用いてこのクラスのオブジェクトpanel を生成する。 8,次に交換したい座標の指定を行わせ,それをcolumn, rowとする。座標がcolumnMax, rowMaxよりも大きい場合や0以下の場合には警告を出力させる。 9,panel にshowBoardやturnPlaceSettingを実行させることで、次のスライドに示すような表示を得る。 10,3×3の場合,ゲーム終了までの最速の手順は5手,「左上」「右上」「中央」「左下」「右下」を一度ずつ指定するものである。

    • ベストアンサー
    • Java