JavaのObjectは最も基本のクラス!Objectクラスの使い方を学ぼう
  • facebookページ
  • twitterページ
  • 2021.01.22

    JavaのObjectは最も基本のクラス!Objectクラスの使い方を学ぼう

    JavaのObjectとは?

    Javaの Objectクラスは、Javaのすべてのクラスが共通して継承しているスーパークラスです。

    もし extends句を省略してクラスを作成した場合にも、暗黙的に Objectクラスが継承元になります。

    たとえば、複数の値を扱う ArrayListは次のような継承関係にあります。
    幾重にも継承が行われていますが、最も基底となっているクラスはやはり Objectクラスです。

    Objectクラスのメソッド

    Objectクラスには、次のメソッドが定義されています。

    すべてのクラスが Objectを継承していることから、Javaの全クラスで次のメソッドが使用できます。

    メソッド 説明
    clone オブジェクトのコピーを作成して返します。
    equals 他のオブジェクトが等しいかどうかを比較する。
    finalize クラスへの参照が不要となった時に、ガベージ・コレクタによって呼び出される。
    アプリから明示的に呼ぶことは基本的にしません。
    getClass このオブジェクトのクラス情報を返します。
    hashCode オブジェクトのハッシュ値を返します。
    wait 現在のスレッドが待機します。
    notify()または notifyAll()が呼びされるとスレッドを再開。
    notify waitで待機させたスレッドを再開します。
    複数のスレッドが待機している場合は、どれか1つが再開します。
    notifyAll waitで待機させたすべてのスレッドを再開します。
    toString オブジェクトの文字列表現を返します。

    clone() メソッド

    cloneメソッドは、自分自身のクラスの型と同じクラスのインスタンスを新たに作成し、 Stringintなどのプロパティ値をコピーして返すメソッドです。

    ポテパンダの一言メモ

    intcharなどのプリミティブ型の変数は、 intA = intBのように別の変数に自身を代入するだけで、値の句複製ができるが、参照型のクラスは別の変数に自身を代入すだけでは、クラスのインスタンスへの参照がコピーされるだけで、片方の変数の内容を書き換えると、もう一方の変数のクラスの内容も書き変わってしまうため、参照型のクラスを複製する場合は cloneメソッドを使用します。

    toString() メソッド

    オブジェクトの文字列表現を返すメソッドです。

    独自に作成したクラスなどで toString() メソッドを実装(オーバーライド)し、フィールドの値などを出力しておくことで、デバッグ時やログを出力した際に便利なので、可能であればすべてのクラスに実装しておくようにしましょう。

    例えば、 ArrayListクラスの toString()メソッドを呼び出すと、リストの中の要素の文字列表現が次のように取得できます。

    equals() メソッド

    オブジェクト同時を比較し等しいかどうかを比較するメソッドです。

    Javaではプリミティブ型の変数は、 a == bのような比較演算子で内容を比較しますが、 String型や、その他の参照型は equals()メソッドで比較しないと、正しい結果を得ることができません。

    クラスの継承

    冒頭でも少し触れましたが、Javaをはじめとするオブジェクト指向の言語には「クラスの継承」という概念があります。

    クラスの継承は、継承元(スーパークラス)に定義された機能(メソッドやプロパティ)を、継承先(サブクラス)のクラスに引き継ぐことができます。

    継承をすることで、共通的なコードを継承元のクラスに定義しておき、継承先のクラスは必要な部分のみを拡張することで、同じようなコードを複数のクラスに記述する必要がなくなり、開発生産性の向上や保守性が上がります。

    次のコードは Parentクラスを継承元(extends)に、 Childクラスを宣言する例です。
    さらに継承先の Childクラスでの childMethod(メソッドでは、 Parentクラスのメソッドやフィールドを参照します。

    実際に Childクラスのインスタンスを生成して、 childMethod()メソッドを呼んでみましょう。

    このように、継承先クラスから継承元のメソッドやフィールドが参照できているのが分かります。

    ポテパンダの一言メモ

    Childクラスをさらに継承したクラスを作成して、親子孫のような関係のクラスを作成した場合でも、継承関係がある限り、孫のクラスやその先の継承クラスにまで Parentクラスの機能が引き継がれます。

    Javaで継承クラスを作成する詳細は次の記事でも紹介しています。

    【関連記事】
    【初心者歓迎】クラスの継承とは?Javaのextendsの使い方を理解しよう!

    さいごに

    Javaの Objectクラスや継承の概念について解説してきました。

    この記事で述べたように、 ObjectクラスはJavaのすべてのクラスが継承する大元のクラスです。

    Objectクラスの equalstoStringメソッドは、実際のシステム開発の現場でもよく使われるため、是非使い方を覚えておきましょう。

    【関連記事】
    【Java】new演算子の基本的な使い方を理解しよう!【サンプル有り】
    【JAVA】基本的な知識を身に着ける!16進数について分かりやすく解説。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE