Return to Video

Polymorphism

  • 0:00 - 0:03
    サラとインターフェースの例を見てきましたね
  • 0:03 - 0:07
    どのように機能するのか知ってもらえたと思います
  • 0:07 - 0:11
    しかし不思議なことがあります
  • 0:11 - 0:17
    郊外の風景にDrawableのArrayListがありました
    家、車、犬などが入っています
  • 0:17 - 0:21
    その中の1つをDrawable型の変数に格納します
  • 0:21 - 0:25
    そしてdrawメソッドを呼び出します
  • 0:25 - 0:31
    dはDrawable型に属しdrawメソッドを持っています
    このdは何でしょうか?
  • 0:31 - 0:37
    これは変数なのでオブジェクトを参照しています
    何のクラスのオブジェクトでしょうか?
  • 0:37 - 0:41
    Drawableのクラスのオブジェクトだと
    思うかもしれませんがそうでしょうか?
  • 0:41 - 0:46
    Drawableはインターフェースなので
    Drawableクラスはありません
  • 0:46 - 0:52
    このオブジェクトがどのクラスに属するかを
    知る方法はないのです
  • 0:52 - 0:57
    ただ1つ分かっているのはこのオブジェクトは
    drawメソッドを持っているクラスに
  • 0:57 - 1:03
    属しているということです そしてArrayListの
    様々な要素をループしているので
  • 1:03 - 1:09
    この行で異なるメソッドが呼び出されます
  • 1:09 - 1:12
    例えば家、犬、そして
    まだ想像すらしていない他のクラスも
  • 1:12 - 1:19
    Drawableインターフェースを
    実装することを選択できるのです
  • 1:19 - 1:24
    この変数はポリモーフィズムと呼ばれ
    “複数の型に属することを許す”という意味です
  • 1:24 - 1:29
    この場面にぴったりの名前ですね
    なぜならdrawメソッドは
  • 1:29 - 1:34
    実装しているクラスによって
    まったく異なる形を描くからです
  • 1:34 - 1:38
    しかし通常Javaでポリモーフィズムという
    言葉が表しているのは
  • 1:38 - 1:43
    メソッドを呼び出すとオブジェクトの型によって
    実際のメソッドが呼び出されることです
  • 1:43 - 1:50
    なぜポリモーフィズムは重要なのでしょう
    それは拡張性のあるシステムを構築することができ
  • 1:50 - 1:55
    プログラムのロジックを変えずに
    新しい型を追加できるからです
  • 1:55 - 2:00
    では郊外の風景に新しい型を追加してみてください
  • 2:00 - 2:07
    例えば道に転がっているボールでも結構です
  • 2:07 - 2:13
    プログラムをほんの少し変えるだけで
    できることに気づいてください
Title:
Polymorphism
Description:

more » « less
Video Language:
English
Team:
Udacity
Project:
cs046: Intro to Programming
Duration:
02:15

Japanese subtitles

Revisions