継承の勉強

継承は親クラスのメンバを変更できることによってカプセル化を邪魔することがある。つまりインスタンスに影響を持つから。
継承を使うのは、"BがAを継承する場合、BはAの一種である"の関係にある時。(関係の無いクラスから継承することがあるの?)

public, 他の人
private, 自分
protected, 継承利用者(サブクラス)



/* 資料

Matzにっき(2003-08-06)
"私個人が継承を用いるかどうかについての唯一絶対のルールは「is-aの関係にあるか」です。 この関係が成立しない時に継承を使うのは純粋に間違いです。"
http://www.rubyist.net/~matz/20030806.html

継承 - Wikipedia
"一般的に、BがAを継承する場合、B is a A. (BはAの一種である)という意味的な関係(Is-a関係)が成り立つ"
http://ja.wikipedia.org/wiki/%E7%B6%99%E6%89%BF

Matzにっき(2003-08-06)
"Rebecca Wirfs-Brock女史は1988年のOOPSLAの論文でResponsibility Driven Designについて述べています。

その論文の中で、クラスの利用者は

* 外部利用者(第三者)
* 内部利用者(つまり自分自身)
* 継承利用者(サブクラス)

の三種類があり、それぞれに見せるべき視点が異なると述べています。C++のpublic, private, protectedは まさにこの三種類に対応しているのです。余談"
http://www.rubyist.net/~matz/20030806.html

2007-11-27 - flashrod
"アクセス制御は「そのメンバを利用する者が何であるかによって決めればよい」となる。
ここでメンバというのは
C++だとメンバ関数・メンバ変数の総称、
Javaだとメソッド・フィールドのこと、
AS3だとメソッド・プロパティのことだ。"
http://d.hatena.ne.jp/flashrod/20071127#1196178219

Has-a - Wikipedia
"多数のHas-a関係は相まって所有階層を形成する。これは異なる種類の階層(派生型)を構成するIs-a関係と対比される。"
http://ja.wikipedia.org/wiki/Has-a