private プライベート アクセス修飾子 - 萌えJava超入門
第十五章 アクセス修飾子

private

アクセス修飾子を privateにしたときの動作を
サンプルコードで確認しましょう。

目次

1.アクセス修飾子 private


private(プライベート)は、クラス外からアクセスを禁止するアクセス修飾子です。
最も制限の厳しいアクセス修飾子です。

 private
 修飾子名 アクセス範囲適用対象
 private クラス内でのみ利用可能(非公開) メンバ



2.サンプルコード


同一クラス内で、privateのメソッドにアクセスしてみましょう。
メンバのスコープはクラス全体ですからもちろん通りますが、
privateメンバにアクセスできるのはクラス内からだけです。

KlassPub
   ws
    └---pk01
          └---MainPvt.java  ← mainメソッドsay()


//MainPvt.java
package pk01;
class MainPvt{
    public static void main(String[] args){
        System.out.println("main method.");
        say();
    }
    private static void say(){
        System.out.println("private say method.");
    }
}

コマンドライン
ws>javac pk01/MainPvt.java
ws>java pk01.MainPvt
main method.
private say method.

うまくいきましたね。
まあ何の違和感も感じないけど。



それじゃあ
ダメなやつ行ってみよう。
楽しそうね。


3.NG例 同一パッケージ内から参照


sayメソッドを KlassPvtクラスに分けて、同一パッケージ内にKlassPubしました。
MainPvtクラスからアクセスしてみましょう。

配置
   ws
    |---pk01
          |---MainPvt.java  ← mainメソッド
          └---KlassPvt.java  ← say()


MainPvt.java NG
//MainPvt.java
package pk01;
class MainPvt{
    public static void main(String[] args){
        System.out.println("main method.");
        KlassPvt.say();
    }
}

//KlassPvt.java
package pk01;
class KlassPvt{
    private static void say(){
        System.out.println("pk01.KlassPvt");
    }
}

コマンドライン
ws>javac pk01/MainPvt.java
pk01\MainPvt.java:6: エラー: say()はKlassPvtでprivateアクセスされます
                                KlassPvt.say();
                                        ^
エラー1個

KlassPvtクラスは
デフォルトだから見つかったけど
privateメソッドは
アクセスしちゃダメだそうです。

「privateはクラス内だけ」
覚えておいてくれ。
privateはクラス内だけ!!


お疲れ様でした。


© 2019 awasekagami