#navi(Programming_II/08)
#contents
*スーパークラスとサブクラス [#n867b013]

-すでに存在するクラスに,新しいメソッドやフィールドを追加したり,メソッドを上書きしたりして,新しいクラスを作ることができる.
-''サブクラス'':クラスを拡張して出来た新子クラスをもとのクラスの''サブクラス''(subclass)と呼ぶ.
-''スーパークラス'':もとのクラスを,拡張して出来たクラスの''スーパークラス''(superclass)と呼ぶ.

*extends [#va38fd0d]
長方形に名前をつけた新しいクラスを宣言する.
 class NameRectangle extends Rectangle{
 	...
 }
 
-RectangleのサブクラスであるNameRectangleを宣言する.
-NameRectangleのスーパークラスは,Rectangleです.
-Rectangleは,NameRectangleの拡張クラスです.

 class ClassB extends ClassA{
 	...
 }

#ref(class.png);
スーパークラスClassAとサブクラスClassB

*継承 [#v2100063]
-サブクラスはスーパークラスのメソッドとフィールドを受け継ぐ
-コンストラクタは継承されない
-スーパークラスのコンストラクタの明示的な呼び出しには super()を使う.
**IS-A関係 [#bfca4788]
-サブクラスはスーパークラスの一種である.をオブジェクト指向の用語で「IS-A関係」という.
-犬は哺乳類の一種である.
-NameRectangleは,Rectangleの一種である.
**HAS-A関係 [#p9585f03]
-インスタンスをフィールド型として持つとそのインスタンスを自分のものとして扱える.このような関係を「HAS-A関係」という.
*オーバーライド [#jdef1185]
-サブクラスでスーパークラスから継承したメソッドやフィールドに同じ名前のメソッドやフィールドを宣言すると変更することができる.これを''オーバーライド''と呼ぶ.

*継承とアクセス制御 [#vf5dee70]
-スーパークラスでprivateと書かれたフィールドやメソッドは,サブクラスに継承されない.
-他のクラスから利用させたくないフィールドやメソッドに対して利用する.
-そのクラス内部だけで使うため.
-このように名前の使用を許可したり,禁止したりする機構を''アクセス制御''と呼ぶ.→Text第17章を参照

*抽象クラス [#hdca5ab1]
-メソッドの名前と引数の型だけが決まっていて,実装がないメソッドを抽象メソッド(abstractメソッド)と呼び,そのクラスを抽象クラス(abstractクラス)と呼ぶ.
-抽象クラスはそのサブクラスを宣言して抽象メソッドをオーバーライドする必要がある.


#navi(Programming_II/08)


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS