Javaのis-aとhas-a関係(オブジェクト指向的な関係)について説明しております。is-aは継承に、has-aはカプセル化に関連しているというところまで、イメージを用いりながら説明しています。
なお、基礎知識や関連情報として以下のような内容がありますので、はじめに紹介しておきます。
Javaのis-aまたはhas-a関係は、以下のとおりです。
継承関係 …サブクラス is a スーパクラス。
包含関係 …全体クラス has a 部分クラス。
このページでは、Javaのis-aまたはhas-a関係(オブジェクト指向的な関係)について説明しています。 以下では、イメージを用いりながらis-a関係とhas-a関係について説明しています。
1つのアプリケーションを構成するクラス間にはis-aとhas-aの2種類の関係が存在します。
1つはAクラスからBクラスを派生というクラス間の関係(is-a:継承関係)で、 もう1つは、CクラスでのDクラスの参照というクラス間の関係(has-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関係とは、クラスという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関係といいます。
Javaとは?から言語の枠を超えるところまで、Java言語についてまとめています。
スポンサーリンク
サイト内のページ
言語
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インフラセキュリティ
公開サーバーのセキュリティ
SI
ホームページの作り方
スポンサーリンク
関連サイト内検索ツール
zealseedsおよび関連サイト内のページが検索できます。
IPアドレス確認ツール
あなたのグローバルIPアドレスは以下です。
18.116.89.70
HTMLの表示色確認ツール
パスワード生成ツール
文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。
ここに生成されます。
スポンサーリンク
Copyright (C) 2007-2024 zealseeds. All Rights Reserved. Loarding…