public Verständnisfrage

Status
Nicht offen für weitere Antworten.
I

impression12

Gast
Hi Ihr,

ich versuche es kurz zu fassen.....ich verstehe nich ganz was public für ne Aufgabe hat. Normalerweiße heißt es doch das variablen und Methoden auch auserhalb der Klasse sichtbar sind und aufgerufen werden können.
Hier mein kleines Beispiel. Die Klasse main hab ich aus Platzgründen ausgelassen, hier werden nur die Panels auf die Contentpane gelegt.

Mein Problem: Ich lege den Button auf das A42Paneloben, möchte allerdings das JTextField zahl1 an A42Berechnen übergeben....mit den Übergabeparametern kann ich hier leider nicht arbeiten.....nun hab ich zahl1 auf public gesetzt und dachte nun ich kann über den Klassennamen z.b. A42Panel.zahl1 auf das JTextfiel in der Klasse A42Berechnen zugreifen....und das verstehe ich nicht....selbst wenn ich eine public Methode in die Klasse A42Panel schreibe, die das JTextField zahl1 zurückgibt, kann ich nicht außerhalb auf die Methode zugreifen. Setze ich JTextField zahl1 static, so funktioniert das ganze, aber ich habe gehört das wäre dann nicht objektorientiert und wäre nicht gut.
Wo ist hier mein Denkfehler bezüglich public und wie löse ich die Aufgabe auf einfach und richtige Weise....bin für jede Hilfe sehr dankbar....


Grüße
impression

Code:
///////////////////////A42Paneloben///////////////////////////
class A42Paneloben extends JPanel{
	A42Paneloben(){
		add(new A42Berechnen());
	}
}

///////////////////////A42Panel///////////////////////////
class A42Panel extends JPanel{	
	public JTextField zahl1 = new JTextField(8);
	A42Panel(){
		super();  
		add(zahl1);
	}
}

///////////////////////A42Berechnen///////////////////////////
class A42Berechnen extends JButton implements ActionListener{
	A42Berechnen(){
		super("berechnen");
		this.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e){
		
	}
}
 

Marco13

Top Contributor
Man nennt das ja objektorientierte Programmierung. Und nicht klassenorientierte Programmierung. Man braucht bei allem, was nicht static ist, ein Objekt, um darauf zugreifen zu können. Und OB man darauf zugrifen darf, wird durch public/protected/private geregelt.
Code:
class X
{
    public int a;
    private int b;
}

class Y
{
    void foo()
    {
        X x = new X(); // Objekt anlegen
        x.a = 123; // a ist public: Das geht
        x.b = 456; // b ist private: Das geht NICHT
    }
}

Ich sehe mal das hier
möchte allerdings das JTextField zahl1 an A42Berechnen übergeben
als den Kern der Frage... Dabei ist allerdings noch unklar, wo z.B. ein Objekt vom Typ A42Paneloben erstellt wird

Code:
///////////////////////A42Paneloben///////////////////////////
class A42Paneloben extends JPanel{
	A42Paneloben(JTextField zahl1){
		add(new A42Berechnen(zahl1));
	}
}

///////////////////////A42Panel///////////////////////////
class A42Panel extends JPanel{	
	public JTextField zahl1 = new JTextField(8);
	A42Panel(){
		super();  
		add(zahl1);
	}
}

///////////////////////A42Berechnen///////////////////////////
class A42Berechnen extends JButton implements ActionListener{
        private JTextField zahl1;
	A42Berechnen(JTextField zahl1){
                this.zahl1 = zahl1;
		super("berechnen");
		this.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e){
		zahl1.setText("Hallo!");
	}
}


// Wo auch immer:
A42Panel a42Panel = new A42Panel();
A42Paneloben a42Paneloben = new A42Paneloben(a42Panel.zahl1); // Geht, weil zahl1 public ist


Allerdings ist das ganze so nicht besdonders schön strukturiert. Man sollte eigentlich NIE irgendwelche Variablen direkt 'public' machen, sondern get/set-Methoden verwenden. Und ... eine Klasse, die von JButton erbt, ist SEHR ... unkonventionell. Das sollte man auch nicht machen, wenn man nicht genau weiß, was man da tut...
 
I

impression12

Gast
Hey vielen Dank.....ich glaub ich habs verstanden....mein Denkfehler war, das ich natürlich erstmal ein neues Objekt der Klasse erzeugen muss um auf das JTextField dieser Klasse von außen zugreifen zu können.
Jetzt stellt sich mir allerdings die nächste Frage.

In Deinem Beispiel legst Du ja ein neues Objekt der Klassen A42Paneloben an um wie gesagt auf das JTextField zuzugreifen.....allerdings handelt es sich hier nun um ein neues Objekt, und somit auch um ein neues JTextField.....sprich wenn ich dann den Button klicke und es wird Text an das JTextField übergeben, dann nicht an das ursprüngliche aus der Klasse A42Panel....sondern von dem neu erzeugten Objekt oder? Das gleiche gilt auch umgekehrt....wenn ich was von dem JTextField mit getText() erhalten möchte, dann bringt es doch nix ein neues Objekt der Klasse anzulegen oder?
 

Jango

Gesperrter Benutzer
Mein Tip: Konsolenanwendungen!! Schreibt solange Konsolenanwendungen, bis ihr den Sinn der OOP begriffen gabt!!
Immer und immer wieder - bis es zu den Ohren wieder rauskommt. Dann kann man sich an GUI wagen.
 
G

Guest

Gast
Sorry....uns wurde das an der Uni so beigebracht....wir haben gleich mit Swing Komponenten angefangen um uns das bildlicher vorzustellen ;)......zudem hab ich in 2 Wochen Prüfungen....Hilfe :bae:
 

Marco13

Top Contributor
Ausprobieren!

Das TextField wird erst dann erstellt, wenn ein Objekt der Klasse erstellt wird, die es enthält.

Ein Beispiel (ungetestet)
Code:
class PseudoTexField
{
    public PseudoTextField()
    {
        System.out.println("TextField wird angelegt!");
    }
}


class X
{
    public PseudoTexField pseudoTexField = new PseudoTexField();
}

class Y
{
    void foo()
    {
        X x = new X(); // Erst JETZT wird das PseudoTexField angelegt! Vorher existierte es nicht!
    }
}


Oder auch so:
Code:
class X
{
    public JTexField textField = new JTextField();
}
ist (praktisch, fast) das gleiche wie
Code:
class X
{
    public JTexField textField = null;
    public X()
    {
        textField = new JTextField();
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
G field public/private wann Java Basics - Anfänger-Themen 11
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
A Javadoc nur bei public Klassen? Java Basics - Anfänger-Themen 3
T rotes herz public void paint(Graphics g) Java Basics - Anfänger-Themen 2
G Was ist public static void main(String[] args)? Java Basics - Anfänger-Themen 12
P public enum ";"expected Java Basics - Anfänger-Themen 7
B public und protected Java Basics - Anfänger-Themen 11
G <identifier> expected bei public void final Java Basics - Anfänger-Themen 3
G GUI Controls private oder public Java Basics - Anfänger-Themen 6
G Variablen public oder private? Java Basics - Anfänger-Themen 9
R public Klassen Java Basics - Anfänger-Themen 12
S private public Java Basics - Anfänger-Themen 5
R private / public Frage Java Basics - Anfänger-Themen 7
F Warum sind Interface-Methoden public? Java Basics - Anfänger-Themen 19
C public void keyPressed(KeyEvent e) Java Basics - Anfänger-Themen 2
G Public ,private,protected Java Basics - Anfänger-Themen 1
N public void und verhalten bei return Java Basics - Anfänger-Themen 2
K public boolean contains (Object obj) > true or false Java Basics - Anfänger-Themen 16
M public static void main(String... args)<- Was bedeutet das? Java Basics - Anfänger-Themen 5
A public/private/etc. Zusatz weglassen Java Basics - Anfänger-Themen 2
A die public static void main ? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben