Kotlinにおけるアクセス修飾子(private、public、internal、protected)の使い方と違い


  1. private: private修飾子を使用すると、その要素は同じクラス内からのみアクセス可能となります。他のクラスや外部からはアクセスできません。例えば、private修飾子を使用してプロパティを定義すると、そのプロパティは同じクラス内のメソッドからのみ利用できます。
class MyClass {
    private val myProperty = 10
    fun myMethod() {
        println(myProperty) // 同じクラス内からはアクセス可能
    }
}
fun main() {
    val obj = MyClass()
    // obj.myProperty にはアクセスできない(privateなので)
}
  1. public: public修飾子は、その要素がどのクラスからでもアクセス可能であることを意味します。デフォルトでは、Kotlinのクラスやメンバーはpublicとして宣言されています。
class MyClass {
    val myProperty = 10 // デフォルトはpublic
    fun myMethod() {
        println(myProperty) // どのクラスからでもアクセス可能
    }
}
  1. internal: internal修飾子を使用すると、同じモジュール内からのみアクセス可能となります。モジュールは、Kotlinのコンパイル単位であり、通常は1つのプロジェクト内に対応します。
internal class MyInternalClass {
    internal val myProperty = 10
    internal fun myMethod() {
        println(myProperty) // 同じモジュール内からはアクセス可能
    }
}
  1. protected: protected修飾子を使用すると、その要素は同じクラス内およびサブクラスからのみアクセス可能となります。他のクラスや外部からはアクセスできませんが、サブクラス内ではアクセスが可能です。
open class MyBaseClass {
    protected val myProperty = 10
}
class MySubClass : MyBaseClass() {
    fun myMethod() {
        println(myProperty) // 同じクラスおよびサブクラス内からはアクセス可能
    }
}

以上がKotlinにおけるアクセス修飾子の使い方と違いの説明です。それぞれの修飾子を適切に使用することで、クラスやメンバーの可視性を制御し、安全で柔軟なコードを作成することができます。