さて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#]
