忍者ブログ

からすまる日誌 java

実践(8) スーパークラス(親クラス)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

実践(8) スーパークラス(親クラス)

さてp430の一連のを打ち込むとエラーがでますよ
 
暗黙的スーパークラスItem()は、デフォルト・コンストラクターは未定義ですうんぬん。
 
おわかりかな?
Weaponの方では「継承」なので、親を見に行こうとする
super();
が勝手に付け加えられている状態。
しかし、継承親のItemを「引数0」で見に行こうとしたら、おりませんでした。引数2個のしかないやん。
というエラー。
 
じゃあ引数2このやつを付け加えてやりましょう。
--->Weapon.java
public class Weapon extends Item{
 public Weapon() {
  super("名無しの剣",300);
 }
}
 
これですね、「引数2このやつを付け加えても、引数0の呼び出しはやはりエラーになるのでは?」と思って先生にきいたら、何かひとつ用意しておくのが大事らしい。
 
もしくは高岸さんのいうように、Item.javaの方に付け加えてやる手もあり
 
 //引数ない場合を設定してやるのもあり
 public Item() {
  this("名無しの剣,100");
  System.out.println("引数0できましたわ");
 }
 

じゃあMain430をこうして、
public class Main430 {
 public static void main(String[] args) {
  Weapon w = new Weapon();
  System.out.println(w.getName());
  System.out.println(w.getPrice());
 }
}
 
エラーが出ますので、ゲッターを作りましょう
ゲッターの作り方は右クリック→ソース→getter/setterの生成で。
作る場所は?
NameやPriceが宣言されてる場所。すなわちItem.java
 private String name;
 private int price;
ここのnameの上で右クリックして自動生成する(自分でコードを打ってもいいよ)
 
こうなる
--->Item.java
public class Item {
 private String name;
 private int price;
 public Item(String name) {
  this(name,0);//これがよろしい
  //this.name=name;//教科書のこの記述はよろしくない記述
  //this.price=0;//同上
 }
 //引数ない場合を設定してやるのもあり
 public Item() {
  this("名無しの剣,100");
 }
 //getter/setter自動生成
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getPrice() {
  return price;
 }
 public void setPrice(int price) {
  this.price = price;
 }
 public Item(String name, int price) {
  this.name=name;
  this.price=price;
 }
}

p436
汎化(おおざっぱ。一般的な。):親に行くほどこれ
特化(具体的、特殊):子に行くほどこれ
 
1.あり
2.なし
3.なし
4.あり
5.なし
子クラス is a 親クラス を挟んで考える
Sushi は food ありだな
Studentは Person ありだな
Engine は car ?? ないな
ということ
 

伊藤フォルダ0130のexerciseフォルダごとDLしましょう
→解凍して、
→exerciseふぉるだをctrl+c
→part2-11/srcに貼り付けctrl+v
エラーが出るがp439をやればとれる
 
[#IMAGE|a0396706_11300323.png|202001/30/06/|mid|956|583#]
PR

コメント

ブログ内検索

P R