#navi(Programming_II/08)
#contents
*次回:Robocode大会 [#j0c23627]

*スーパークラスとサブクラス [#n867b013]

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

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

 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クラス)と呼ぶ.
-抽象クラスはそのサブクラスを宣言して抽象メソッドをオーバーライドする必要がある.

*第4回 課題:冬休み宿題 [#c598f42e]
-moodleで,練習課題1〜4をそれぞれ2回ずつ行いなさい.
-- 1度始めると,2時間あけないと2回目ができません.
--点数は評価に入れません.やったかやらないかだけ評価します.

#navi(Programming_II/08)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS