moodle

スーパークラスとサブクラス

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

extends

長方形に名前をつけた新しいクラスを宣言する.

class NamedRectangle extends Rectangle{
	...
}
  • RectangleのサブクラスであるNamedRectangleを宣言する.
  • NamedRectangleのスーパークラスは,Rectangleです.
  • Rectangleは,NamedRectangleの拡張クラスです.
class ClassB extends ClassA{
	...
}
class.png

スーパークラスClassAとサブクラスClassB

Rectangle.java

Expand allFold all
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
-
|
|
-
|
!
-
|
!
-
|
|
!
-
|
!
!
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

Expand allFold all
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
-
|
-
|
|
!
-
|
|
!
!
class NamedRectangle extends Rectangle {
    String name;
    NamedRectangle() {
        super();
        name = "NO NAME";
    }
    NamedRectangle(String name) {
        super(200,32);
        this.name = name;
    }
}

継承

  • サブクラスはスーパークラスのメソッドとフィールドを受け継ぐ
  • コンストラクタは継承されない
  • スーパークラスのコンストラクタの明示的な呼び出しには super()を使う.

IS-A関係

  • サブクラスはスーパークラスの一種である.をオブジェクト指向の用語で「IS-A関係」という.
  • 犬は哺乳類の一種である.
  • NameRectangleは,Rectangleの一種である.

HAS-A関係

  • インスタンスをフィールド型として持つとそのインスタンスを自分のものとして扱える.このような関係を「HAS-A関係」という.

オーバーライド

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

継承とアクセス制御

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

抽象クラス

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


添付ファイル: fileclass.png 100件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-06-20 (木) 14:45:23 (2337d)