前提
インターフェースやポリモーフィズムの勉強中に、「インターフェースはis-aの関係」と言っているサイトや参考書と「インターフェースはcan-doの関係」と言っている学習サイトなどがあり混乱しています。
私としてはis-aの関係でもcan-doの関係でもなりうると考えていますが何が正しいのでしょうか?
下記の自作ソースコードは一応成り立っているので(手塚治虫のロボット的なのが何人もいる状態と仮定)、can-doの関係は成り立つと思います。
また、スッキリわかるjava入門という参考書に、「インターフェースは抽象クラスの一部」とあり、抽象クラスはis-aの関係で継承しているので、インターフェースはis-aの関係でも使えると解釈しています。
該当のソースコード
php
1<?php2 3class Mangaka{4 public function interview(){5 echo "取材をした";6 }7 public function go_sleep(){8 echo "寝る";9 }10}11 12class TedukaOsamu extends Mangaka implements Doctor{13 14 15 function ope(){16 echo "手術をした";17 18 }19}20 21interface Doctor 22 {23 //インターフェイスでは、実装することができない。24 // public function eat();25 26 public function ope();27 }28 29 $teduka=New TedukaOsamu();30 $teduka->ope();31 32 ?>
0 コメント