クラスの継承
サブクラスにメソッドを追加する
スーパークラスにないメソッドをサブクラスに追加してみます。
目次
1. サブクラスにメソッドを追加する
サブクラスに、スーパークラスには無いメソッドを追加してみましょう。
「スーパークラスとはちょっとだけ違うクラス」を作ります。
サブクラスに独自のメソッドを
追加してみよう。
ここから継承の
本番って感じっすね。
//Animal_01.java
public class Animal_01{
protected static String group = "生き物です。";
protected String name;
public Animal_01(){
this("no_name");
}
public Animal_01(String name){
this.name = name;
}
public static void printGroup(){
System.out.println(group);
}
public void printName(){
System.out.println(name + "だぞ! ガオー!");
}
}
サブクラスに、sayWishメソッド を普通に書き足しました。
これでOKです。
//Cat_21.java
public class Cat_21 extends Animal_01{
public Cat_21(String name){
super(name);
}
//追加したメソッド
public void sayWish(){
System.out.println(name + "は小判が欲しいのにゃ!");
}
}
//Driver_21.java
public class Driver_21{
public static void main(String[] args){
Animal_01 animal01 = new Animal_01("アニマル浜口");
Cat_21 cat21 = new Cat_21("ニャース");
animal01.printName(); //スーパークラスのメソッド
cat21.printName(); //継承したメソッド
cat21.sayWish(); //追加したメソッド
}
}
Animal_01.java、
Cat_21.java、
Driver_21.java、を
wsフォルダに保存して実行します。
コマンドライン
>cd ws
ws>javac -encoding UTF-8 Driver_21.java
ws>java Driver_21
アニマル浜口だぞ! ガオー! ← スーパークラスのメソッド
ニャースだぞ! ガオー! ← 継承したメソッド
ニャースは小判が欲しいのにゃ! ← 追加したメソッド
超~簡単。
難しいことはないと思う。
アップキャスト(後述)するときは
注意してくれ。
2. シンボルを見つけられません
もちろん↓これはダメです。
うん。
私でもわかる。
//Driver_21NG.java
public class Driver_21NG{
public static void main(String[] args){
Animal_01 animal01 = new Animal_01("アニマル浜口");
animal01.sayWish();
}
}
Animal_01.java、
Cat_21.java、
Driver_21NG.java、を
wsフォルダに保存して実行します。
コマンドライン
>cd ws
ws>javac -encoding UTF-8 Driver_21NG.java
Driver_21NG.java:6: エラー: シンボルを見つけられません
animal01.sayWish();
^
シンボル: メソッド sayWish()
場所: タイプAnimal_01の変数 animal01
エラー1個
「シンボルを見つけられません」
という、ちょっと独特な言い回しのエラーが表示されます。
よく見れば、
見つからない「シンボル」とは
シンボル: メソッド sayWish()
であり、
それがあるべき場所は
場所: タイプAnimal_01の変数 animal01
である旨が記載されています。
このメッセージの表示パターンは、遭遇する率が割と多いので覚えておくといいと思います。
お疲れ様でした。