2016-11-17 11 views
0

この質問(Why are instance variables in Java always private?)にトップstackoverflowの答えでは、誰かが私はあなたが、民間の文字列でJavaでセッターメソッドなしでプライベートデータフィールドにアクセスできますか?

class Address { 
    private String phone; 

} 

を以下のクラスを持っているならば、あなたは、次のコードを使用してプライベート文字列を変更することができないと述べたが、は、それを試して、それは動作します。

// main method 
Address a = new Address(); 
a.phone="001-555-12345"; 

彼はセッターメソッドを使用する必要があると言いましたが、私はそれを使わずに行いました。

私は彼の答えを間違って解釈したと思うが、どうしたらよいかわからない。どんな洞察にも感謝します。これが機能するために、民間分野のみそれらが宣言されたクラス内でアクセス可能であるため、

+0

彼は右です。同じクラス以外のプライベートStringを変更することはできません。 –

答えて

2

あなたの主な方法は、あなたのアドレスクラス内を保持しなければならない。mainメソッドが別の場所に位置するようにコードを変更してみてください(通常はそうであるように)、それはもはや機能しません。

例えば、これは動作します:

class Address { 
    private String phone; 

    public static void main(String[] args) { 
     Address a = new Address(); 
     a.phone="001-555-12345"; // this works fine -- it's within Address 
    } 
} 

が、上記のコードを維持し、これを試してみてください:

class TestAddress { 

    public static void main(String[] args) { 
     Address a = new Address(); 
     a.phone="001-555-12345"; // won't compile since it's not within Address class 
    } 
} 
+0

例を参考にすると多くのことが明らかになりました。とてもありがたい – thedongthrowaway

関連する問題