Part16: 可視性

ことり「♪」
凛「ことりちゃんが嬉しそうにゃ」
ことり「やっとμ’sもAqoursも、こういう二次創作の世界だけじゃなくて公式にお互いの話ができるんだよね」
凛「それは凛も嬉しいにゃ!これで梨子ちゃんとまきりんぱなの関係が」
ことり「そこが同じクラスって設定自体まだ明らかじゃないけどね・・・」


ことり「さて今回は、可視性のお話をします。クラスとかの、見えちゃいけない部分を隠す機能かな」
凛「スキャンダル防止機能」
ことり「最近の状況を考えると、それは笑えないかな」
凛「心からお詫び申し上げます」

ことり「これまで見てきたとおり、クラスとかインターフェイスは、いくつかの要素から構成されています」

  • 関数
  • プロパティ
  • コンストラクタ
  • 内部クラス

ことり「これらのそれぞれに、そのクラスの外からどう見えるかを指定するのがVisibility Modifier、アクセス修飾子」

ことり「Idolクラスに、publicprotectedprivateの修飾子がついた関数があります。これを、main関数、Idolクラスの中、サブクラスのSchoolIdolクラスの中で呼び出してるんだけど、このコードはコンパイルできないです」
凛「にゃ?」
ことり「ポイントはprotectedprivate。その前にpublicは、どこからでもアクセスできる修飾子で、何も書かなかった場合と同じになります」
凛「今までに実装した関数は全部publicだったの?」
ことり「そういうこと。だからどこからでも呼び出せたんだけど、protectedprivateは違います」

ことり「protectedは、それが定義されたクラスとそのサブクラスからアクセスできる修飾子。この例のpractice関数は、IdolSchoolIdolからは呼び出せるけどその外側からは呼び出せません」
凛「練習は関係者以外に見せるものじゃないにゃ」
ことり「privateは、それが定義されたクラスだけからアクセスできる修飾子。audition関数はIdolクラスだけから呼び出せます」
凛「女の子は誰でも、スクールアイドルになれる!もんねっ」
ことり「年齢制限という残酷な線引きはあるけどね・・・」

ことり「さっきのコードは関数を例にしたけど、これはプロパティ、コンストラクタ、内部クラスについても全く同じ」
凛「publicprotectedprivateから選べばいいんだね」

ことり「実は、アクセス修飾子はもう1つあって・・・」
凛「あれ?まだあるの?」
ことり「internalっていうのがあってね、同じモジュール内からのみ参照可能なんだけど、これ開発環境によるところがあって・・・」
凛「モジュールって初めて聞いたにゃ」
ことり「コンパイル単位みたいな感じらしいんだけど、IntelliJ IDEAのモジュールだったり、Antのタスクだったり、MavenとかGradleのプロジェクトだったりするみたい」
凛「よくわからないにゃ・・・」
ことり「ちょっとここでカバーする範囲から外れるから、詳しい説明は割愛するね」


ことり「次回は拡張関数。Kotlinの核心へ近付いていくよ」
凛「ばっちこいにゃ!」
ことり「難しいよ?」
凛「手を伸ばせ、それから悩め!」
ことり「まあ、前向きなのは、いいことです」


LINEで送る
Pocket


返信を残す

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