サブクラスにメソッドを追加する - 萌えJava超入門
クラスの継承

サブクラスにメソッドを追加する

スーパークラスにないメソッドをサブクラスに追加してみます。


目次

1. サブクラスにメソッドを追加する

サブクラスに、スーパークラスには無いメソッドを追加してみましょう。
スーパークラスとはちょっとだけ違うクラス」を作ります。

萌えJava超入門
サブクラスに独自のメソッドを
追加してみよう。
萌えJava超入門 萌えJava超入門
ここから継承の
本番って感じっすね。
Animal_01.java(再出)
  //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(再出)
//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
アニマル浜口だぞ! ガオー!        ← スーパークラスのメソッド
ニャースだぞ! ガオー!            ← 継承したメソッド
ニャースは小判が欲しいのにゃ!     ← 追加したメソッド


萌えJava超入門 萌えJava超入門
超~簡単。
萌えJava超入門
難しいことはないと思う。
アップキャスト(後述)するときは
注意してくれ。


2. シンボルを見つけられません

もちろん↓これはダメです。

萌えJava超入門 萌えJava超入門
うん。
私でもわかる。
萌えJava超入門
//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
である旨が記載されています。

このメッセージの表示パターンは、遭遇する率が割と多いので覚えておくといいと思います。
あれ? こんなポカミスするのって、私だけでしょうか。



お疲れ様でした。




© 2019 awasekagami