前提
インターフェースやポリモーフィズムの勉強中に、「インターフェースはis-aの関係」と言っているサイトや参考書と「インターフェースはcan-doの関係」と言っている学習サイトなどがあり混乱しています。
私としてはis-aの関係でもcan-doの関係でもなりうると考えていますが何が正しいのでしょうか?
下記の自作ソースコードは一応成り立っているので(手塚治虫のロボット的なのが何人もいる状態と仮定)、can-doの関係は成り立つと思います。
また、スッキリわかるjava入門という参考書に、「インターフェースは抽象クラスの一部」とあり、抽象クラスはis-aの関係で継承しているので、インターフェースはis-aの関係でも使えると解釈しています。
該当のソースコード
php
1<?php 2 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 ?>
回答4件
あなたの回答
tips
プレビュー