#navi(Programming_II/13)
#contents

*moodle [#e0ac1739]
-https://tarkus.eva.ie.u-ryukyu.ac.jp/moo/
*スーパークラスとサブクラス [#w637d041]

-(下巻:P.44)
-すでに存在するクラスに,新しいメソッドやフィールドを追加したり,メソッドを上書きしたりして,新しいクラスを作ることができる.
-''サブクラス'':クラスを拡張して出来た新しい子クラスをもとのクラスの''サブクラス''(subclass)と呼ぶ.
-''スーパークラス'':もとのクラスを,拡張して出来たクラスの''スーパークラス''(superclass)と呼ぶ.
*extends [#x4b2b31d]
長方形に名前をつけた新しいクラスを宣言する.
 class NamedRectangle extends Rectangle{
 	...
 }
 
-RectangleのサブクラスであるNamedRectangleを宣言する.
-NamedRectangleのスーパークラスは,Rectangleです.
-Rectangleは,NamedRectangleの拡張クラスです.

 class ClassB extends ClassA{
 	...
 }

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

Rectangle.java
#code(java){{
class Rectangle {
    int width;
    int height;
    Rectangle() {
        setSize(0, 0);
    }
    Rectangle(int width, int height) {
        setSize(width, height);
    }
    void setSize(int width, int height) {
        this.width = width;
        this.height = height;
    }
    public String toString() {
        return "[" + width + ", " + height + "]";
    }
}

}}

NamedRectangle.java
#code(java){{
class NamedRectangle extends Rectangle {
    String name;
    NamedRectangle() {
        super();
        name = "NO NAME";
    }
    NamedRectangle(String name) {
        super(200,32);
        this.name = name;
    }
}

}}
*継承 [#hcafe40d]
-サブクラスはスーパークラスのメソッドとフィールドを受け継ぐ
-コンストラクタは継承されない
-スーパークラスのコンストラクタの明示的な呼び出しには super()を使う.
**IS-A関係 [#g002eeb7]
-サブクラスはスーパークラスの一種である.をオブジェクト指向の用語で「IS-A関係」という.
-犬は哺乳類の一種である.
-NameRectangleは,Rectangleの一種である.
**HAS-A関係 [#vac5fedc]
-インスタンスをフィールド型として持つとそのインスタンスを自分のものとして扱える.このような関係を「HAS-A関係」という.


*オーバーライド [#b005965e]
-サブクラスでスーパークラスから継承したメソッドやフィールドに同じ名前のメソッドやフィールドを宣言すると変更することができる.これを''オーバーライド''と呼ぶ.

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

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

#navi(Programming_II/13)

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