Part15: インターフェイス

ことり「あくあり~うむで~ふたりが~であうふぁんたじ~♪」
凛「・・・・・・」
ことり「ふいに~♪・・・あれ、どうしたの凛ちゃん」
凛「・・・・・・」
ことり「これ、プロフィールカード?えーと、ルビィちゃんの」
凛「・・・・・・」
ことり「今回からサインとスリーサイズが載ってるんだよね。えーと、B76・・・あっ」
凛「納得がいかないにゃーーーーーーーーーーーーーっ!!」


各所の反応

希「ま、ウチらは安泰やね」
にこ「ええ、どうせ安泰よ安泰!ルビィに一縷の望みをかけてたけど甘かったわよ!」

絵里「鞠莉ちゃんって、正直ちょっとひやひやしてたけど・・・ま、このエリチカお姉さまには及ばなかったわね」

花陽「Aqoursだったら、花陽がちょうど真ん中くらいかな・・・。千歌ちゃんとか、もう少し細く見えるんだけど・・・」

真姫「で、μ’s平均点組だけど」
穂乃果「穂乃果はさ、自分のスタイルとかあんまり気にしないし、気にしなさすぎで海未ちゃんに怒られるくらいだから・・・あはは」
真姫「・・・もう、私もそのくらい達観できればいいんだけど。あの中二病堕天使以下よ?私たち」

海未「黒澤ルビィ:154cm/B76」
海未「園田海未:159cm/B76」
海未「・・・くっ」


本文ここから

ことり「さてと。前に抽象クラスというのを見たよね。インスタンスが作れないクラスなんだけど」
凛「abstractつけるやつだよね。覚えてるにゃ」
ことり「あれとよく似た言語機能で、インターフェイスというのがあります。今日はその話をするね」

ことり「インターフェイスは、あるクラスが実装すべき振る舞いを規定するもの、とでも言えばいいかな」
凛「?」
ことり「よくわかんないよね」
凛「よくわかんないにゃ」

ことり「じゃあ、ミュージックフェスみたいなの」
凛「ミュージックフェス?」
ことり「アニサマでもサマソニでも紅白でものど自慢でもいいんだけど、いろんなジャンルのミュージシャンが集まって歌を披露するイベントを考えてみます」

SchoolIdol Singing!!
ProfessionalIdol Singing!!
Vocalist Singing!!

ことり「ミュージシャンっていっても、いろんな人いるよね。ここでは二次元代表として、高坂穂乃果ちゃん、島村卯月ちゃん、平沢唯ちゃんにご登場いただきました」
凛「その二次元代表って説明は必要かにゃ・・・」
ことり「3人とも別々のクラスのインスタンスです。だけど、イベントの参加者管理って考えると同じ扱いができた方がいいよね」
凛「たしかに、一律で歌手って扱えたら便利そうだね」
ことり「そうそう。それと、そもそも出場権は歌える人だけにしないとだよね」
凛「エリザベート・バートリー」
ことり「聞こえません」
凛「ネロ・クラウディアス」
ことり「聞こえませんっ!」
凛「歌の上手下手は置いておくってことでいいかにゃ」
ことり「・・・それで、この問題はインターフェイスを使うとうまく解決できます」

ことり「interfaceってキーワードで、Singableっていうインターフェイスを定義しています。インターフェイスの命名はいろんな流儀があるんだけど、これはその1つ」
凛「歌える人?」
ことり「そう、歌える人。singっていう関数を持っているけど、これはabstractがついてるのと同じで、Singableが実装を持っているわけじゃありません」
凛「別のクラスで継承して使うのかな?」
ことり「インターフェイスを実装する、って言い方をするよ。書き方は継承とほぼ同じで、たとえばSchoolIdolクラスの定義を見るとだいたいわかるよね」
凛「コンストラクタの引数がない以外は同じだね」
ことり「こうすると、Singableを実装したクラスは必ずsing関数を実装しないといけない、つまりSingableを実装していれば必ず歌えるということになります」
凛「つまり、Singableを実装したクラスだけがフェスの出場権があるってことだね」
ことり「それと、インスタンス作ってるところに注目。変数の型が全部Singableだよね」
凛「んーと、インターフェイスって型になるの?」
ことり「うん。そのhonokaSchoolIdolクラスのインスタンスだけど、SchoolIdolSingableを実装してるから、Singable型としても扱えるの」
凛「あ、ってことは、他のクラスも全部Singable型にできるにゃ!」
ことり「そうそう。だから、全部同じ配列に入れて、同じ操作で順番に歌ってもらったりできるの」

ことり「Kotlinのインターフェイスは、実装も持てます。だから、実は抽象クラスとあんまり変わらないの」
凛「それ、なんで別になってるの?」
ことり「Javaがインターフェイスに実装持たせられるようになったから・・・っていう話だと思うけど、抽象クラスとインターフェイスの違いは、バッキングフィールドを持てるかどうか、かな」
凛「前回出てきたにゃ。プロパティの値を持っておくところだよね」
ことり「うん。インターフェイスではクラスみたいにプロパティも定義できるけど、getterとsetterは自分で書かないといけないし、クラスではfieldで参照できてたバッキングフィールドにもアクセスできないの」
凛「うーん、使い分けが・・・いまいちよくわからないにゃ・・・」
ことり「個人的には、インターフェイスは最初に説明したような型定義に使うのがいいと思うな」


ことり「今日はこのへんで。凛ちゃん、気を落としたらだめだよ」
凛「ことりちゃんは今回の件についてどう思ってるにゃ?」
ことり「えーっと、ことりは・・・小さい方になっちゃったのかなぁ。これでも希ちゃんに、ふくよかって言われたことあるのに」
凛「ことりちゃんと同じ80のダイヤ会長とか梨子ちゃんって、Aqoursでは絶対貧乳要員だよね」
ことり「自然たっぷりの環境で生まれ育つと、きっと発育がよくなるんだよ。絶対そう!」
凛(梨子ちゃん東京育ちなんだけど・・・)


LINEで送る
Pocket


返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です