次回:Robocode大会 †
スーパークラスとサブクラス †
- すでに存在するクラスに,新しいメソッドやフィールドを追加したり,メソッドを上書きしたりして,新しいクラスを作ることができる.
- サブクラス:クラスを拡張して出来た新子クラスをもとのクラスのサブクラス(subclass)と呼ぶ.
- スーパークラス:もとのクラスを,拡張して出来たクラスのスーパークラス(superclass)と呼ぶ.
extends †
長方形に名前をつけた新しいクラスを宣言する.
class NamedRectangle extends Rectangle{
...
}
- RectangleのサブクラスであるNamedRectangleを宣言する.
- NamedRectangleのスーパークラスは,Rectangleです.
- Rectangleは,NamedRectangleの拡張クラスです.
class ClassB extends ClassA{
...
}
スーパークラスClassAとサブクラスClassB
継承 †
- サブクラスはスーパークラスのメソッドとフィールドを受け継ぐ
- コンストラクタは継承されない
- スーパークラスのコンストラクタの明示的な呼び出しには super()を使う.
IS-A関係 †
- サブクラスはスーパークラスの一種である.をオブジェクト指向の用語で「IS-A関係」という.
- 犬は哺乳類の一種である.
- NameRectangleは,Rectangleの一種である.
HAS-A関係 †
- インスタンスをフィールド型として持つとそのインスタンスを自分のものとして扱える.このような関係を「HAS-A関係」という.
オーバーライド †
- サブクラスでスーパークラスから継承したメソッドやフィールドに同じ名前のメソッドやフィールドを宣言すると変更することができる.これをオーバーライドと呼ぶ.
継承とアクセス制御 †
- スーパークラスでprivateと書かれたフィールドやメソッドは,サブクラスに継承されない.
- 他のクラスから利用させたくないフィールドやメソッドに対して利用する.
- そのクラス内部だけで使うため.
- このように名前の使用を許可したり,禁止したりする機構をアクセス制御と呼ぶ.→Text第17章を参照
抽象クラス †
- メソッドの名前と引数の型だけが決まっていて,実装がないメソッドを抽象メソッド(abstractメソッド)と呼び,そのクラスを抽象クラス(abstractクラス)と呼ぶ.
- 抽象クラスはそのサブクラスを宣言して抽象メソッドをオーバーライドする必要がある.
第4回 課題:冬休み宿題 †
- moodleで,練習課題1〜4をそれぞれ2回ずつ行いなさい.
- 1度始めると,2時間あけないと2回目ができません.
- 点数は評価に入れません.やったかやらないかだけ評価します.