があらのメモ帳

プログラミングで気になったこと

interfaceっているの? 初心者なりに理解したInterfaceの利点について

Javaの勉強中に interface というものにつまずいた。

interface とはこんなの

interface Play {
     void play();
}

中身がないのになぜあるんだ? 無くても変わらないんじゃないの? と思っていろいろ調べてみた。

どうやらこういうことらしい

例えば、生徒というinterfaceがあって、get宿題というメソッドがある。

interface 生徒 {
     public String get宿題();
 }

生徒interfaceを実装(implements)した佐藤君と鈴木さんがいる。

class 佐藤君 implements 生徒 {
     public String get宿題() {
       return "国語の宿題";
 }

class 鈴木さん implements 生徒 {
     public String get宿題() {
       return "数学の宿題";
 }

先生クラスからは、生徒が 誰であっても 宿題を手にすることができる。

class 先生 {
    void 宿題の回収(生徒 生徒){
         生徒の宿題 = 生徒.get宿題();
    }
}

宿題の回収メソッドの引数に生徒クラス型の佐藤君を入れると佐藤君から宿題を手にすることができる。
鈴木さんや新しい生徒が追加されてもメソッドの引数として渡してあげることによって先生は宿題を回収することができる。

つまりどういうこと?

先生は
      「佐藤君宿題を提出してねー」
      「鈴木さん宿題を提出してねー」

って言うより

      「生徒は宿題を提出してねー」

って言う方が楽じゃないか!ということ




(間違えていたらコメントください)