Klassen Klasse - Objekt - Methode

Nookie

Mitglied
Hallo Javafreaks :)

Ich bin ein Umsteiger von PHP / C++ und arbeite mich gerade etwas in Java ein mit Hilfe der "Insel" =)

Ich werfe mal wider einige fragen in den Raum:

System.out.printf("hallo");

ich würde das gerne mal auseinander nehmen:

1. "System" ist die klasse, richtig?
2. "out" das Objekt, richtig?
3. printf die Funktion (oder in Java heisst es Methode), richtig?

4. Wieso muss überhaupt eine klasse angegeben werden? Nach meinem OOP Verständnis aus C++ ist eine Klasse völlig nutzlos solange sie nicht instanziert worden ist?

5. Wieso kann ich auf das out-objekt zugreifen ohne das ich es vorher instanziert habe? ist "out" ein "Standartobjekt" das ich von Anfang an zur Verfügung habe?

6. Kann ich auf das out-objekt zugreifen weil es "static" ist?

So, ich denke das sind mal die wichtigsten fragen wobei mir Nummer 4 am meisten Kopfzerbrechen bereitet :)

Ich hoffe diese fragen nerven euch nicht, ich denke für euch Veteranen klingen die ziemlich dumm.
mfg
 
N

nillehammer

Gast
1. "System" ist die klasse, richtig?
Korrekt
2. "out" das Objekt, richtig?
Korrekt und zwar ein sog. OutputStream (genau genommen ein PrintSteam). Also etwas, in das Du von Deinem Programm aus Daten reinschreiben kannst.
3. printf die Funktion (oder in Java heisst es Methode), richtig?
Korrekt das ist eine der Methoden, in den Stream zu schreiben,
4. Wieso muss überhaupt eine klasse angegeben werden? Nach meinem OOP Verständnis aus C++ ist eine Klasse völlig nutzlos solange sie nicht instanziert worden ist?
Ich weiß nicht, wie es in C++ ist, aber in Java gibt es auch sog. Klassenvariablen und Klassenmethoden. Diese werden mit dem Schlüsselwort "static" gekennzeichnet. "out" ist eine solche Variable der Klasse System. Genau genommen ist out sogar eine "Konstante". Das erkennt man daran, dass sie sogar noch mit dem Schlüsselwort "final" gekennzeichnet ist. Mit "static" definiert man Variablen/Methoden, die für alle Instanzen der Klasse gleich sind. Weil das so ist, braucht man die Klasse erst garnicht zu instanzieren. Mal ein Beispiel, um den Unterschied zwischen Klassenvariable und Instanzvariable zu verdeutlichen:
[Java]
public class Mensch {
// Das ist bei allen Menschen gleich, deswegen Klassenvariable mit static (bzw. wg. final sogar Konstante)
// Ich weiß, es gibt auch Menschen mit weniger als 10 Fingern
public static final int STANDARD_ANZAHL_FINGER = 10;

// Ein Mensch hat einen Namen. Der ist natürlich von Mensch zu Mensch verschieden. Deswegen Instanzvariable
// ohne static.
private String name;
}
[/Java]
Die Klasse musst Du angeben, um eben genau diese Variable zu referenzieren. Eine Klasse ist also nicht automatisch nutzlos, wenn sie nicht instanziert wurde. Es gibt Klasen, wo das so ist. Es gibt aber auch Klassen, wo das nicht so ist. Es gibt sogar Klassen, die garnicht instanziert werden können. Solche Klassen enthalten in der Regel nur Utility-Methoden oder Definitionen global genutzter Konstanten. System ist z.B. so eine Klasse.
5. Wieso kann ich auf das out-objekt zugreifen ohne das ich es vorher instanziert habe? ist "out" ein "Standartobjekt" das ich von Anfang an zur Verfügung habe?
Die Programmierer der Klasse System haben es bereits für Dich instanziert. So kannst du es einfach benutzen. Der Code, der sowas macht, sieht ungefähr so aus:
[Java]
public class MeineKlasse {
public static final EineAndereKlasse out = new EineAndereKlasse();
}
[/Java]
6. Kann ich auf das out-objekt zugreifen weil es "static" ist?
Du kannst auf den PrinStream namens out deswegen zugreifen, weil die Programmierer der Klasse System ihn bereits für Dich initialisiert haben. Du musst dafür keine Instanz von System erzeugen (kannst Du auch garnicht), weil die Variable "static" ist.
 
Zuletzt bearbeitet von einem Moderator:

HoaX

Top Contributor
1-3: ja
4: out ist als statisch deklariert. Gibt es auch in C++, d.h. eine Klasse ist nicht nutzlos wenn es keine Instanz von ihr gibt.
5: Der Wert von out kann eigentlich nur im Initializer von System gesetzt werden, da out auch als final deklariert ist.
6: ja, siehe 4.
 
N

nillehammer

Gast
Ich hab mein Beispiel der Klasse Mensch nochmal etwas erweitert, um alle Fälle von Klassen-/Instanz -Konstanten/-Variablen/-Methoden zu verdeutlichen.
[Java]
public class Mensch {
/** Ist für alle Menschen gleich und Konstant (deswegen static final). */
public static final int STANDARD_ANZAHL_FINGER = 10;

/** Zählt einfach, wie oft ein Mensch instanziert (geboren wurde). Die Gesamtanzahl aller Mensch-Instanzen ist
* sozusagen die Erdbevölkerung. Die Variable ist private, um Veränderungen von außen zu verhindern. Sie soll
* nur hochgezählt werden, wenn ein neuer Mensch geboren wird. Das ist das Prinzip der Datenkapselung
* (kennst Du sicher schon)- Klassen-Variablen sind eher selten.
*/
private static int erdBevölkerung;

/** Ein Mensch hat einen Namen. Der ist von Mensch zu Mensch verschieden. Der Name wird
* bei der Geburt vergeben und kann nicht mehr geändert werden (nicht so ganz realistisch, ich weiß)
* Deswegen kein static aber final.
*/
private final String name;

/** Ein Mensch hat ein Alter. Auch das ist von Mensch zu Mensch verschieden, ändert sich aber im Laufe des
* Lebens. Deswegen kein static und kein final. Aber private, um Daten zu kapseln.
*/
private int alter;

/** Konstruktor, der den Namen initialisiert und die Erdbevölkerung hoch zählt. Der Name muss entweder direkt
* bei der Deklaration oder im Konstruktor initialisiert werden, weil er final ist.
*/
public Mensch(final String name) {
this.name = name;
erdBevölkerung++;
}

/** Eine Klassenmethode, deswegen static */
public static int getErdBevölkerung() {
return erdBevölkerung;
}

/** Eine Instanzmethode, deswegen kein static. Beachte den Präfix this. Der kann in diesem Fall auch weggelassen
* werden. Aber dadurch macht man sichtbar, dass man auf eine Instanzvariable zugreift.
*/
public String getName() {
return this.name;
}

public void feiereGeburtstag() {
this.alter++;
}

public int getAlter() {
return this.alter;
}
}
[/Java]
 
Zuletzt bearbeitet von einem Moderator:
S

Spacerat

Gast
[OT]Vorsicht Männers... in, out und err sind zwar final, können aber zur Laufzeit per Setter (setIn, setOut und setErr) neu gesetzt werden (Pseudo-Konstante).[/OT]
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
N Objekt in Methode einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
R Compiler-Fehler Klasse A nutzt Objekt von Klasse B, um Methode von Klasse B auszuführen Java Basics - Anfänger-Themen 11
L Objekt.methode(new Klasse().methode()); Java Basics - Anfänger-Themen 7
C Objekt X über Methode aus anderer Klasse verändert Java Basics - Anfänger-Themen 3
D Objekt der Methode einer anderen Klasse zuordnen Java Basics - Anfänger-Themen 6
M Methode bekommt ein Objekt der Klasse als Parameter. Wozu? Java Basics - Anfänger-Themen 4
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
M Auf erstelltes Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 5
M Objekt einer Klasse speichert die Veränderung nicht Java Basics - Anfänger-Themen 1
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
G Objekt der selben Klasse wie selbst mit Aufrufen des Konstruktors erzeugen Java Basics - Anfänger-Themen 14
Henri Aufruf von getX() und getY() aus der Super klasse Objekt() Java Basics - Anfänger-Themen 3
S Objekt einer Klasse OnClick Java Basics - Anfänger-Themen 5
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
C Klassen Objekt der Instant-Klasse Java Basics - Anfänger-Themen 6
K Objekt einer Klasse weitergeben Java Basics - Anfänger-Themen 1
E Methoden Auf Methoden einer Klasse zugreifen, ohne ein Objekt zu erstellen Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
S Klassen Auf Objekt in Klasse A in Klasse B zugreifen Java Basics - Anfänger-Themen 4
G Auf Objekt der selben Klasse zugreifen Java Basics - Anfänger-Themen 2
G Objekt wie Objekt anderer Klasse behandeln Java Basics - Anfänger-Themen 4
E Attribute von einem Objekt einer anderen Klasse ändern Java Basics - Anfänger-Themen 4
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
V Aufrufendes Objekt bestimmen (nicht die Klasse) Java Basics - Anfänger-Themen 3
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
X Objekt in einer Klasse aufrufen Java Basics - Anfänger-Themen 13
P Kapselung Variable innerhalb einer inneren Klasse ansprechen ohne ein Objekt erzeugen zu müssen? Java Basics - Anfänger-Themen 6
G OOP Aus Objekt auf Funktion der erzeuger Klasse zugreifen? Java Basics - Anfänger-Themen 11
K Kapselung Von Klasse auf Objekt zugreifen Java Basics - Anfänger-Themen 8
S Polymorphes Objekt in eigentliche Klasse casten Java Basics - Anfänger-Themen 6
D OOP Zugriff auf eine Klasse aus einem Interface-Objekt Java Basics - Anfänger-Themen 7
K Klassen Objekt mit einem Namen von einer bestimmten Klasse instanziieren Java Basics - Anfänger-Themen 10
B Klassen über Main Klasse in einer anderen Klasse ein Objekt erstellen Java Basics - Anfänger-Themen 5
A objekt innerhalb der gleiche klasse Java Basics - Anfänger-Themen 10
P Klassen Objekt der Klasse String Java Basics - Anfänger-Themen 9
S Vererbung/Herausfinden welches Objekt von welcher Klasse Java Basics - Anfänger-Themen 4
S OOP Auf ein Objekt von einer anderern Klasse zugreifen Java Basics - Anfänger-Themen 3
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
L auslesen einer Variablen eines Objekt welches "Eigentum" eines Objektes der selben Klasse ist. Java Basics - Anfänger-Themen 12
I Einzelnes Objekt einer Klasse bekommen Java Basics - Anfänger-Themen 9
F Klasse bzw Objekt in eigenen Thread auslagern Java Basics - Anfänger-Themen 3
C Objekt von Klasse im gleichen Paket erzeugen Java Basics - Anfänger-Themen 8
Z objekt erstellen von canonical name einer klasse Java Basics - Anfänger-Themen 6
A [gelöst]Aus der Klasse heraus auf ein anderes Objekt zugreifen Java Basics - Anfänger-Themen 4
J Unterschied Klasse Objekt Java Basics - Anfänger-Themen 4
V objekt einer Klasse erstellen Java Basics - Anfänger-Themen 21
G objekt der selben klasse erzeugen Java Basics - Anfänger-Themen 4
G Objekt der Klasse vs. Objekt des Typs Java Basics - Anfänger-Themen 4
G Methodenaufruf über ein Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Prüfen, ob Objekt von einer Klasse ist Java Basics - Anfänger-Themen 3
T Zugriff auf umgebendes Objekt mittels Objekt innerer Klasse Java Basics - Anfänger-Themen 2
T klasse objekt, syntax Java Basics - Anfänger-Themen 2
G neues Objekt der Klasse eines anderen Objekts Java Basics - Anfänger-Themen 3
G Objekt öffnen von einer anderen Klasse öffnen Java Basics - Anfänger-Themen 6
° Zugriff auf ein Objekt der eigenen Klasse Java Basics - Anfänger-Themen 2
G Problem bei der Angabe von Attributen in einer Objekt-Klasse Java Basics - Anfänger-Themen 3
J Attribut vom Objekt einer eigenen Klasse setzen Java Basics - Anfänger-Themen 6
J Objekt aus anderer Klasse und Package erzeugen Java Basics - Anfänger-Themen 11
E Klasse- Objekt - Klassenobjekt :? Java Basics - Anfänger-Themen 9
L Klasse(Objekt) <=> Klasse <=> Klasse Java Basics - Anfänger-Themen 5
A Objekt der ganzen Klasse zugängig machen Java Basics - Anfänger-Themen 7
S Variabler Name für ein Objekt einer Klasse? Java Basics - Anfänger-Themen 10
M objekt (linkedList) zugriff aus einer anderen klasse Java Basics - Anfänger-Themen 3
I @Inject in normaler Klasse? Java Basics - Anfänger-Themen 4
P Enum oder normale Klasse? Java Basics - Anfänger-Themen 10
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
Amina556 Eigene Klasse definieren Java Basics - Anfänger-Themen 9
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Klasse in Runden Klammern bei Objektimplementierung Java Basics - Anfänger-Themen 4
J Klassen Klasse als Komponententyp bei Feldern Java Basics - Anfänger-Themen 2
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
Detlef Bosau nichtstatische Innere Klasse, this Pointer. Java Basics - Anfänger-Themen 47
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
frager2345 Optional Klasse Java Java Basics - Anfänger-Themen 2
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
H Klassen Typ und Intitialisierungs-Klasse, wer bestimmt was? Java Basics - Anfänger-Themen 1
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
frager2345 Java Klasse Buch verwalten Java Basics - Anfänger-Themen 0
frager2345 Java eigen Klasse zum verwalten von Büchern Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
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
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
G zwei Instanzen einer Klasse Java Basics - Anfänger-Themen 29

Ähnliche Java Themen

Neue Themen


Oben