あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

アクセス修飾子

java に似ているけれど、違うところ

  • パッケージにも指定できる。
  • public キーワードは無い。private, protected を指定する。
  • アクセス修飾子の指定なし(デフォルト)が public の意味。
  • protected メンバーは定義クラスとその派生クラスのみアクセスできる。*1
  • private メンバーは定義クラスとその内側に定義したクラスからしかアクセスできない。*2
  • アクセス修飾子に限定子を指定して意味を補足できる。private[X] , protected[X] の形式*3
      • private[this] 同じクラスでも別オブジェクトはアクセス不可(object private)
      • private[パッケージ名] パッケージ内からはアクセスできる。
      • private[クラス名] クラス内からはアクセスできる。
      • protected[X] を定義しているクラスの全てのサブクラスからアクセス可能。X(パッケージ/クラス)内のクラス、オブジェクトからアクセス可能

*1:同パッケージ内というだけではアクセス不可。C++ の protected とほぼ同じ意味

*2:外側にクラスがあっても外側のクラスからのアクセスは不可

*3:X はパッケージ、クラス、オブジェクトを指定