トップ 言語 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 /Burp /Eclipse /Fiddler /gcc /gdb /Git /g++ /JDK /JMeter /JUnit /Teraterm /ZAP

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

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

Web API
Google Maps

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

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

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

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

PC製品
ZOTAC

SI
ホームページの作り方

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

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

IPアドレス確認ツール

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

3.145.93.210

HTMLの表示色確認ツール

パスワード生成ツール

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

ここに生成されます。

スポンサーリンク