では実際にコードを見てextendsおよびクラスの継承というものを確認してみましょう。
class Test{
public static void main(String args[]){
SubTest subtest = new SubTest();
subtest.display(5);
}
}
class SubTest{
public static void display(int Num){
System.out.println(Num);
}
}
このプラグラムがなにをしているかというと、Subtestのオブジェクトを作って、Subtestクラスのdisplayというメソッドで数字を表示しているだけですね。簡単です。
でも、このメソッドを違うクラスでも使いたい!という場合はどうすればいいでしょうか。例えば、ほとんどのメソッドやメンバ変数は共通しているけど、すこしだけ変更を加えたクラスがほしい・・・そんなときに使うのがextendsとクラスの継承です。このSubTestクラスをスーパークラスとして継承する新たなクラスを書きくわえてみましょう。
class Test{
public static void main(String args[]){
Keisyo keisyoosuruyo = new Keisyo();
keisyoosuruyo.display(44);
keisyoosuruyo.display(5);
keisyoosuruyo.display(4648);
}
}
class SubTest{
public static void display(int Num){
System.out.println(Num);
}
}
class Keisyo extends SubTest{
}
上記のプログラムを見てみてください。メインメソッドの場所でKeisyoクラスのオブジェクトを作成していますが、Keisyoクラスのなかには何もはいっていません。かわりにKeisyoクラスはSubTestクラスを継承しています。このときSubTestクラスはKeisyoクラスのスーパークラスです。
KeisyoクラスはSubTestクラスを継承しているため、KeisyoクラスのオブジェクトkeisyoosuruyoはSubTestクラスのメソッド「display」にアクセスすることができます。 keisyoosuruyo.display(44);のようにSubTestクラスのメソッドをKeisyoクラスのオブジェクトが使っていますが、問題なく動きます。
もちろん以下のように、SubTestクラスのオブジェクトもSubTestクラスのメソッドにアクセスすることが可能です。
class Test{
public static void main(String args[]){
Keisyo keisyoosuruyo = new Keisyo();
SubTest subtest = new SubTest();
keisyoosuruyo.display(44);
subtest.display(325);
}
}
class SubTest{
public static void display(int Num){
System.out.println(Num);
}
}
class Keisyo extends SubTest{
}