プライベート変数のテスト ― 2008年07月02日 18時30分06秒
private 変数も、main 関数から参照、そして変更できる。
% cat Private.java
class Private
{
private int Private = 21;;
public static void main(String[] args)
{
Private p = new Private();
System.out.println(p.Private);
p.Private = 12;
System.out.println(p.Private);
}
}
こちらが実行結果。
% javac Private.java
% java Private
21
12
ただし、private の仕様上、他のクラスにある main 関数からは参照出来ない。
% cat Public.java
class Public
{
public static void main(String[] args)
{
System.out.println(new Private().Private);
}
}
% javac Public.java
Public.java:5: Private has private access in Private
System.out.println(new Private().Private);
確かに、仕様上は、
A private class member or constructor is accessible only within the class body in which the member is declared and is not inherited by subclasses.とあるので仕様違反ではないが、main 関数から、private 関数を呼びたい放題呼べ、private 変数を自由に変更できてしまうではないかと思うのは私だけだろうか。
前回。
最近のコメント