トップ 言語 Java クラス、メソッド、インターフェース Javaのis-aまたはhas-a関係

Javaのis-aとhas-a関係(オブジェクト指向的な関係)

Javaのis-aとhas-a関係(オブジェクト指向的な関係)について説明しております。is-aは継承に、has-aはカプセル化に関連しているというところまで、イメージを用いりながら説明しています。

なお、基礎知識や関連情報として以下のような内容がありますので、はじめに紹介しておきます。

要約―Javaのis-aまたはhas-a関係

Javaのis-aまたはhas-a関係は、以下のとおりです。

  1. is-a関係

    継承関係 …サブクラス is a スーパクラス。

  2. has-a関係

    包含関係 …全体クラス has a 部分クラス。

説明―Javaのis-aまたはhas-a関係

このページでは、Javaのis-aまたはhas-a関係(オブジェクト指向的な関係)について説明しています。 以下では、イメージを用いりながらis-a関係has-a関係について説明しています。

Javaのオブジェクト指向的な関係

1つのアプリケーションを構成するクラス間にはis-ahas-aの2種類の関係が存在します。

1つはAクラスからBクラスを派生というクラス間の関係(is-a:継承関係)で、 もう1つは、CクラスでのDクラスの参照というクラス間の関係(has-a:包含関係)です。

is-a関係

is-a関係とは継承に起因して発生するものです。 たとえば、AクラスからBクラスを派生というクラス間の関係(継承関係)で、以下のようなイメージになります。

class A {
  :
}
class B extends A {
  :
}
class C extends A {
  :
}

上位となる抽象的なクラスをスーパークラスといい、下位の具体的なクラスをサブクラスと言います。 サブクラスは、スーパクラスの機能を原則として受け継ぎスーパクラスの機能も持ち合わせます。 これを継承といい、継承することでスーパクラスの機能をサブクラスで記述しなくて済みます。

例えば、Bクラスをはじめにつくって、汎用的な性質をまとめてAクラスを作ることを汎化と言います。 電車、自動車⇒乗り物というように複数のクラスに共通する抽象的な性質を別のクラスにするイメージです。

また、作成したAクラスからCクラスを作ることを特化と言います。 自動車⇒トラック、バスというように、抽象的なクラスからもっと具体的なクラスを考えるイメージです。

トラックは自動車である(Track is a car)と言え、この汎化と特化の関係をis-a関係と言います。

has-a関係

has-a関係とは、クラスという1つの構造体の中に複数のデータやメソッドをまとめて格納します。 たとえば、CクラスでのDクラスの参照というクラス間の関係(包含関係)で、以下のようなイメージになります。

class C {
  :
  private D d;  //クラスC has a クラスD
  :
  public void setD(D obj) {
    d = obj;
  }
  :
  public D getD() {
    return d;
  }
  :
}
class D {
  :
}

データとメソッドをまとめることは、データを保護して、モジュールの独立性を高めるのに役立ちます。 これをオブジェクトの情報隠蔽(カプセル化)と言います。

例のようにクラスCの属性にクラスDがあるように包含関係は、全体と部分の関係を言います。 たとえば、自動車はハンドルやタイヤをもっているように、 あるクラスが別のクラスをデータ(属性)としてもっているという関係を言います。

ハンドルは自動車の一部である(The handle is a part of a motor vehicle)、 自動車はハンドルをもっている(Car has a handle)と言え、この包含関係をhas-a関係と言います。

もっと深く知るための参考

参考サイト

参考書籍

戻る

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Eclipse /gcc /gdb /g++ /JDK /JUnit /ZAP

技術・仕様
Ajax /CORBA /Java EE(旧称J2EE) /JNI

ライブラリ/Framework/CMS
jQuery /Lucene /MyBatis /Spring /Struts /Seasar2 /WordPress

ITインフラ OSとミドルウェア
Linux /Windows /シェル
Apache/Tomcat /MySQL /Redis /Solr /vsftpd

ITインフラ PC 製品
ZOTAC

ITインフラ サーバー
Web公開サーバー構築

ITインフラ ネットワーク
プログラミング /機器 /構築

ITインフラ セキュリティ
公開サーバーのセキュリティ

SI
ホームページの作り方 /小さな会社のISMS

その他
IT用語 /ITスキル体系 /トレンド履歴

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

34.203.213.116

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク