Javaのアクセス修飾子

 4月になり、社会人としての歩みを始めた今日この頃。研修でJavaがでてきたことで、自分自身アクセス修飾子に対する理解が足りていないと感じたのでメモ。

  • クラスのアクセス修飾子は『public』と『』(修飾子なし)だけ

クラスに修飾子を指定しない状態だと、別パッケージから参照はできなくなる。newはおろか
変数の宣言さえさせてもらえない。

  • メソッドのアクセス修飾子『public』『protected』『』(修飾子なし)『private』

コンストラクタ、フィールドも同様だと思われる。
たとえクラスとコンストラクタがpublicでも、メソッドのアクセス修飾子がprotected
などならば、別パッケージから参照はできない。


別パッケージのクラスから継承を行うと、スーパークラスコンストラクタがprotected
修飾子だとサブクラスからsuperでコンストラクタを呼べるが、修飾子なしだと
superでコンストラクタが呼べない。