Object型 - 萌えJava超入門
クラスの継承

Object型

Object型は、すべてのクラスのスーパークラス

java.lang.Object

目次

1. Object型とは


extends Object

java.lang.Object というクラスが実在します。
Object型は、すべてのクラスのスーパークラスです。
すべてのクラスは、Objectクラスのサブクラスとも言えます。

クラスライブラリのクラスも、自分で作ったクラスも、Objectクラスのサブクラスです。

クラスの継承をする際に、「extends クラス名」と記述しますが、
クラスの定義で、extends を省略した場合は、extends Object が記載されているものとして解釈されます。

extends を省略
  class クラス名 {
      //内容
  }

↓↓↓ 以下のように解釈されます。↓↓↓

解釈
  class クラス名 extends Object{
      //内容
  }

萌えJava超入門 萌えJava超入門
ふ~ん。
重要
 クラスの定義で、extends を省略した場合、
 extends Object が記載されているものとして解釈されます。

萌えJava超入門
Object型というのは
Javaに限らず
オブジェクト指向の
プログラム言語の多くで
用いられている。



2. toStringメソッド


Object型は、toStringメソッドや、equalsメソッド、hashCodeメソッド等を持っています。
今後、これらのメソッドは、クラスライブラリを学ぶ中で度々現れますが、
Object型から継承されたものです。
重要
 toStringメソッドは Object型から継承されたものです。

萌えJava超入門 萌えJava超入門
はぁ。
萌えJava超入門
ちょっとそのまま
読み進めて。


3. すべてのインスタンスは、Object型変数に代入できる


すべてのクラスは、Objectクラスのサブクラスなので、
すべてのクラスのインスタンスは、アップキャストで Object型変数に代入できます。

重要
 すべてのクラスは Object型にアップキャストできます。

萌えJava超入門 萌えJava超入門
ほほぅ。
萌えJava超入門


4. サンプル Object型にアップキャスト

何の継承関係もなさそうな Klass_A、Klass_B、Klass_C、ですが
いずれも Objectのサブクラスなので、Object型にアップキャストできます。
そして、toStringメソッドは、Objectクラスにあるのでアップキャストしたまま使えます。

萌えJava超入門
すべてのクラスは
Object型にアップキャスト
できるぞ。
//Klass_A.java
public class Klass_A {
      private String name;
      public Klass_A(String name){
          this.name = name;
      }

      @Override
      public String toString(){
          return name;
      }
}

萌えJava超入門
お上品に
toString に @Overrideを
記述しておこう。
Objectクラスのオーバーライドだからな。
//Klass_B.java
public class Klass_B {
      private String name;
      public Klass_B(String name){
          this.name = name;
      }

      @Override
      public String toString(){
          return name;
      }
}

//Klass_C.java
public class Klass_C {
      private String name;
      public Klass_C(String name){
          this.name = name;
      }

      @Override
      public String toString(){
          return name;
      }
}

萌えJava超入門 萌えJava超入門
ここでアップキャストね!
//Driver_ob.java

public class Driver_ob{

    public static void main(String[] args){
        Object[] obArray = new Object[3];
        obArray[0] = new Klass_A("ヨーゼフ");
        obArray[1] = new Klass_B("パトラッシュ");
        obArray[2] = new Klass_C("白いお父さん");

        for(int i=0; i<obArray.length; i++){
            String str = obArray[i].toString();
            System.out.println(str);
        }
    }
}

Klass_A.java
Klass_B.java
Klass_C.java
Driver_ob.java
を wsフォルダに保存して実行します。

コマンドライン
>cd ws
ws>javac -encoding UTF-8 Driver_ob.java
ws>java Driver_ob
ヨーゼフ
パトラッシュ
白いお父さん


萌えJava超入門
このチュートリアルで紹介する予定はないけど、
戻り値が Object型のメソッドも存在する。
戻り値を目的のクラスにダウンキャストして使うんだ。


クラスの継承はこれで終わりです。
お疲れ様でした。

萌えJava超入門
クラスの継承って
割と難関だから、
ちょっとづつ慣れれば
いいと思うぞ。
萌えJava超入門 萌えJava超入門
またねー。



お疲れ様でした。




© 2019 awasekagami