field public/private wann

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hallo,

denn sinn des private modifiers habe ich, denke ich, verstanden. er erlaubt den zugriff von "außen" auf fields eines objektes zu "verbieten" und ermöglicht so eine kapselung, z.B. indem get/set Methoden irgenwelche prüfungen vornehmen und nicht jeder wild das feld ändern kann wie er will.

wann sollte man ein feld aber public machen? d.h. soll nicht gerade verhindert werden, dass auf felder "einfach so" zugegriffen werden kann und ein unkontrolliertes modifizieren der werte dadurch erlaubt ist? d.h. sollte nicht am besten immer private genutzt werden?
 

Der Müde Joe

Top Contributor
>wann sollte man ein feld aber public machen?

Grob gesagt: Gar nie.
Für public static final Felder schon.

Gibt ja noch was dazwischen, protected bzw package-protected, je
nach dem ob man Felder vererben lassen will (oder besser gesagt
den Zugriff darauf, den vererbt werden auch private Felder) oder
ob man die Felder im package veröffentlichen will.

Generell:
So wenig wie möglich, nur soviel wie nötig...
 
G

Gast

Gast
also gibt es keinen sinvollen einsatz instanzvariablen public zu setzen?
 

mahe

Aktives Mitglied
Wenn man das macht dann meistens aus Bequemlichkeit.

Bei nicht öffentlichen Klassen welche kaum Funktionalität bieten und hauptsächlich dem Zusammenfassen von Variablen dienen ist das durchaus legitim.
 

Landei

Top Contributor
public höchstens bei static final (wie schon erwähnt), oder wenn es auf das letzte Quentchen Performance ankommt (etwa eine Vector3d-Klasse für 3D-Anwendungen)
 

musiKk

Top Contributor
Bei Parameterobjekten könnte man das machen. Da man damit nur lange Parameterlisten verhindern will, ist eine eventuelle Fehlerprüfung (wie sie in Settern ja vorkommen kann) dort fehl am Platz.

Also das ist nur ein Fall, wo ich sagen würde, dass public Member nicht schaden und nicht, dass sie unbedingt verwendet werden sollten. IDEs generieren Getter und Setter ja auch automatisch. Aufwand hätte man dadurch also keinen großen.
 

0x7F800000

Top Contributor
Landei hat gesagt.:
(etwa eine Vector3d-Klasse für 3D-Anwendungen)
in diesem konkreten fall kommt es imho auch darauf an, dass dieses Objekt schon wesentlich älter als 400 Jahre ist, und sich seitdem an den member-variablen nichts verändert hat. Außerdem sind dort eh alle werte ausnahmslos zulässig, und werden es auch immer bleiben, daher braucht man da nicht mal sicherheitshalber irgendwelche setter einzubauen.

Aber bereits bei sowas: http://java.sun.com/j2se/1.4.2/docs/api/java/awt/GridBagConstraints.html kriege ich irgendwie ein mulmiges gefühl :autsch:
 

Marco13

Top Contributor
Gerade oder auch in bezug auf das Beispiel von Vector3f (wie es in der Java3D vecmath Bibliohek heißt) : Mit public-Variablen macht man sich die Möglichkeit kaputt, einen Listener für Änderungen an dieser Variable zu basteln. Man sollte sich also SEHR genau überlegen, ob das Sinn macht.
 

0x7F800000

Top Contributor
Marco13 hat gesagt.:
Gerade oder auch in bezug auf das Beispiel von Vector3f (wie es in der Java3D vecmath Bibliohek heißt) : Mit public-Variablen macht man sich die Möglichkeit kaputt, einen Listener für Änderungen an dieser Variable zu basteln. Man sollte sich also SEHR genau überlegen, ob das Sinn macht.
Wozu genau soll man einen Listener an einem 3D-Vektor brauchen? ???:L Wenn sich in irgendeinem spiel irgendwas in Bewegung setzt, dann kann man solche ereignisse imho auch auf einer höheren ebene abfangen, da braucht man jetzt nicht wirklich jede koordinate bei jeder veränderung zu überprüfen. Oder kannst du bitte eine Anwendung nennen, wo das essentiel notwendig wäre? :bahnhof: Ist dir evtl. beim basteln von Swogl etwas aufgefallen?
 

Marco13

Top Contributor
Andrey hat gesagt.:
Marco13 hat gesagt.:
Man sollte sich also SEHR genau überlegen, ob das Sinn macht.
Wozu genau soll man einen Listener an einem 3D-Vektor brauchen? ???:L

Da hat jemand SEHR genau überlegt, und ist zu dem selben Schluss gekommen, wie du :wink: Das ist eines der SEHR wenigen Gegenbeispiele.
(Wenn man ein "kompliziertes" (schlecht dokumentiertes) Programm hat, wo auf einmal irgendein Dr*cks-Vector3f irgndwo ein "NaN" enthält, und man gerne wüßte, wo das herkommt, geht zwar das eklige Debuggen los, aber das ist kein wirkliches Argument. Man könnte sich zwar noch andere Gründe ausdenken, aber ... wenn einem diese public x,y,z nicht passen, dann kann man ja seine eigene Vector3f-Klasse verwenden ... )
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Optionals als field Java Basics - Anfänger-Themen 1
B Get property field von Name Java Basics - Anfänger-Themen 9
C Compiler-Fehler No such Field error Java Basics - Anfänger-Themen 20
B OOP next cannot be resolved or is not a field Java Basics - Anfänger-Themen 6
K Compiler-Fehler Button cannot be resolved or is not a field Java Basics - Anfänger-Themen 6
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
J Field auf Datentyp prüfen Java Basics - Anfänger-Themen 8
K Variablen Cannot make a static reference to the non-static field time Java Basics - Anfänger-Themen 6
T Cannot refer to an instance field xxx while explicitly invoking a constructor Java Basics - Anfänger-Themen 14
P Compiler-Fehler Cannot make a static reference to the non-static field process Java Basics - Anfänger-Themen 3
R Compiler-Fehler sequenz cannot be resolved or is not a field Java Basics - Anfänger-Themen 2
K OOP Vererbtes Field über Class Objekt Java Basics - Anfänger-Themen 3
I Verwendung von Constant Field Values Java Basics - Anfänger-Themen 4
J Interface: The final field Variablen.N cannot be assigned Java Basics - Anfänger-Themen 2
G access static field Java Basics - Anfänger-Themen 2
F Read access to enclosing field xy is emulated . Java Basics - Anfänger-Themen 2
S Field einer abstrakten Klasse wird nicht gesetzt Java Basics - Anfänger-Themen 2
D Field Java Basics - Anfänger-Themen 4
T Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 8
T GUI, JMenuBar Fehler: The field menuBar is not visible Java Basics - Anfänger-Themen 7
C Kann mir jemand sagen warum public void unzulässig ist? Java Basics - Anfänger-Themen 2
Say public/default Interface Java Basics - Anfänger-Themen 9
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
melaniemueller Datenkapselung Sichtbarkeit public Java Basics - Anfänger-Themen 4
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
S public static boolean Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
G Klassen Mit fremder Klasse auf public Methode zugreifen Java Basics - Anfänger-Themen 23
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
Javafan01 Dateiname und Public class Java Basics - Anfänger-Themen 4
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
J Klasse wird als private erkannt obwohl sie public deklariert ist Java Basics - Anfänger-Themen 3
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
I Methoden public void paintComponent (Graphics g) Java Basics - Anfänger-Themen 4
M public static int in ActionListener Java Basics - Anfänger-Themen 6
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
K modifier public Java Basics - Anfänger-Themen 3
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
D Klassenvariablen standardmäßig private oder public? Java Basics - Anfänger-Themen 2
T Java Code Hilfe - public void xxx() Java Basics - Anfänger-Themen 2
T public void - Problem Java Basics - Anfänger-Themen 10
B public/private nur 1x schreiben Java Basics - Anfänger-Themen 3
R public static void Rückgabe Java Basics - Anfänger-Themen 5
P Compiler-Fehler public static void main, Grundloses Problem Java Basics - Anfänger-Themen 4
N Java UML: Eine Frage zu public-Variablen Java Basics - Anfänger-Themen 19
P Erste Schritte public oder static oder wie? Java Basics - Anfänger-Themen 7
T public-private problem Java Basics - Anfänger-Themen 5
J public enum? in Java Java Basics - Anfänger-Themen 9
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B main methode ohne public Java Basics - Anfänger-Themen 5
W Frage public protected konstruktor Java Basics - Anfänger-Themen 6
V public Variablen vs Getter + Setter Java Basics - Anfänger-Themen 4
S Frage zu public static Java Basics - Anfänger-Themen 29
J "public int x" - Zugriff von anderer Klasse (selbes Package) nicht möglich?! Java Basics - Anfänger-Themen 4
E Methoden public static void main(String[] args) Java Basics - Anfänger-Themen 9
O Was bedeutet public class value? Java Basics - Anfänger-Themen 3
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
K Kapselung public / private verständis problem Java Basics - Anfänger-Themen 17
S Warum sind Attribute der Klasse java.awt.Point public? Java Basics - Anfänger-Themen 3
K OOP Attribute von Klasse in die public class übertragen? Java Basics - Anfänger-Themen 7
T Kapselung: public-Methoden in protected-Klassen Java Basics - Anfänger-Themen 3
F public variable erstellen, & darauf zugreifen Java Basics - Anfänger-Themen 12
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
X enum Fehlermeldung "The public type Day must be defined in its own file" Java Basics - Anfänger-Themen 8
B Public boolean einfügen Java Basics - Anfänger-Themen 12
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
R jLabel lässt sich nicht public setzen?? Java Basics - Anfänger-Themen 15
Hamstinator public static. Gute Idee? Java Basics - Anfänger-Themen 6
-horn- public static double[][][] NAME() nur per RETURN Wertrückgabe möglich? Java Basics - Anfänger-Themen 20
S Public-Klassen und Dateien Java Basics - Anfänger-Themen 5
StickToFreak Fehler mit public class Java Basics - Anfänger-Themen 13
K konstruktur als public definieren Java Basics - Anfänger-Themen 11
StickToFreak public class problem ôÔ Java Basics - Anfänger-Themen 3
H eine als public deklariete Variable wird nicht gefunden Java Basics - Anfänger-Themen 6
T Konstruktor mit oder ohne public-Bezeichner? Java Basics - Anfänger-Themen 4
T Geht so was? public void verkaufe (<X implements Produkt& Java Basics - Anfänger-Themen 8
P immer "public class". ? Java Basics - Anfänger-Themen 4
J Public / Private Keys speichern bzw. lesen? Java Basics - Anfänger-Themen 8
A kein zugriff auf variable trotz public? Java Basics - Anfänger-Themen 3
C public static void main(String[] args) Java Basics - Anfänger-Themen 6
D Frage zu public static void main. Java Basics - Anfänger-Themen 4
J public class Java Basics - Anfänger-Themen 15
N Wann muss eine Methode - protected sein wann public wann. Java Basics - Anfänger-Themen 5
G Vor oder hinter public static void main. ? Java Basics - Anfänger-Themen 8
G (Anfängerproblem) Problem mit dem Aufruf von public-Methoden Java Basics - Anfänger-Themen 3
O Unterschied zwischen static und public Java Basics - Anfänger-Themen 2
D Zugriff auf attribut anderer Klasse privat/public? Java Basics - Anfänger-Themen 9
B Warum manchmal public class und manchmal nur class Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben