【kotlin/Android】アクセス修飾子の種類と違いとは?protected/private/internal

【kotlin/Android】アクセス修飾子の種類と違いとは?protected/private/internal

この記事からわかること

  • Kotlinアクセス修飾子使い方
  • 種類違い
  • public/internal/protected/private

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Kotlinのアクセス修飾子とは?

他のプログラミング言語にもあるようにKotlinにもオブジェクトや変数、関数などのアクセスをコントロールするためのアクセス修飾子が用意されています。アクセスをコントロールできることにより、外部(他のクラスなど)に公開したくない情報をオブジェクト内に閉じ込めておけたり、特定の処理のみを外部から利用可能にするといったことが可能になります。

Kotlinでアクセスを制御できるのはクラス、データクラス、列挙型、プロパティ、メソッド、トラクタなどとなっています。

アクセス修飾子の種類

Kotlinではアクセスコントロールを行うために4種類のアクセスレベルが提供されています。

アクセスレベル 概要
public どんなソースファイルからでもアクセス可能。Kotlinのデフォルトアクセスレベル。
internal 同一モジュール内でのみアクセス可能。
protected クラス自身とそのサブクラスからのみアクセス可能。
private 同じクラス内 or 同じファイル内からのみアクセス可能。

そしてこれらのアクセスレベルを指定するためにpublicinternalprotectedprivateという修飾子が用意されています。

public

// public class と同じ
class Person {
    var name: String = "Taro"
    // 明示的に定義しても同じ
    public var age: Int = 20
}

internal

// 同じモジュール内ならアクセス可能
internal class InternalHelper {
    fun doSomething() {}
}

protected

open class Animal {
    protected fun breathe() {
        println("呼吸中")
    }
}

class Dog : Animal() {
    fun run() {
        breathe() // ✅ サブクラスなのでアクセス可能
    }
}

class Cat {
    fun meow() {
        // breathe() ❌ 他のクラス(未継承)なので呼べない
    }
}

private

private val secret = "このファイル内だけで使える"

class User {
    // このクラス内だけ
    private var password: String = "1234" 
    fun printPassword() {
        println(password)
    }
}

まとめ

修飾子 同クラス内 サブクラス 同一ファイル 同一モジュール 他モジュール
public
internal
protected
private

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

Search Box

Sponsor

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index