[備忘]Kotlinの継承

インプットの記録

openキーワード

oepn class Hoge

Hogeが親クラスだとして、Hogeをサブクラスに継承させるためには open キーワードを使わないといけないらしい。
Kotlinはクラスの派生に関して、デフォルトはオープンではなくクローズド(privateみたいなもの)なので、それをオープンにするためにはopenが必要だと。ちなみにクラスの中の関数にも、openをつけないとサブクラスでその関数は使えない。

サブクラスで親クラスの関数やプロパティを使いたい時はoverrideを使う

protectedキーワード

open class PeachTech() {
    protected open val president = "kyosida"

protectedキーワードはそのクラスとサブクラスでしかアクセスできないようにするもの。つまりは

fun main(args: Array<String>) {
    val circle = PeachTech()
    println(circle.president()) ❌
}

上記がダメということだ。main関数はPeachTechクラスとは無関係であるからだ。

class PeachTechChild: PeachTech() { //PeachTechを継承(つまりサブクラス)
      override val president = "na2kera"

というのは可能である。

protectedキーワードはそのクラスとサブクラスでしかアクセスできないようにするもの

のとおりだが、protected を使うことでPeachTechというクラスとそのサブクラスであるPeachTechChild のみアクセス可能になるからだ


yusei53の画像
yusei53

yusei53 has shared 176 reflections. Discover new insights this platform.