[備忘]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
のみアクセス可能になるからだ