2016-11-17 3 views
0

In der oberen Stackoverflow Antwort auf diese Frage (Why are instance variables in Java always private?), sagte jemand, wenn Sie die folgende Klasse mit einem eigenen String haben,Können Sie auf private Datenfelder ohne Setter-Methoden in Java zugreifen?

class Address { 
    private String phone; 

} 

dann können Sie den privaten string mit dem folgenden Code nicht ändern, aber ich versuchte es und es funktioniert.

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

Er sagte, Sie müssten eine Setter-Methode verwenden, aber ich habe es ohne eine verwendet.

Ich denke, ich habe seine Antwort falsch interpretiert, aber ich bin mir nicht sicher, wie. Ich würde mich über jede Einsicht freuen, danke.

+0

Er hat recht. Sie können den privaten String nicht anders als von derselben Klasse ändern. –

Antwort

2

Ihre Hauptmethode muss innerhalb Ihre Adresse Klasse gehalten werden, dafür zu arbeiten, da private Felder zugänglich sind nur innerhalb die Klasse, die sie in deklariert sind. Ziehen Sie Ihren Code zu ändern, so dass das Hauptverfahren an anderer Stelle befindet (wie es normalerweise der Fall ist) und es wird nicht mehr funktionieren.

zum Beispiel das funktioniert:

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 
    } 
} 

aber den obigen Code halten und versuchen, dieses:

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

die Beispiele halfen es deutlich zu klären. sehr dankbar – thedongthrowaway

Verwandte Themen