Möchte Java verstehen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Guten Tag!

Ich bin ein totaler Java-Anfaänger und habe eine Frage an Euch.
Was muss im Konstruktorblock stehen??
Also z.B.:

Code:
 class Klasse 
{....
Klasse auto = new Klasse();
....
Klasse()
{
...
}


Wenn ich nun in diesem Konstruktorblock eine Variable deklariere z.b. int i; ist dies dann eine Objektvariable die zum Objekt auto gehört???
Wenn ich eine Methode in diesem Block einfüge..also z.b. void fahren() kann ich dann mit auto.fahren drauf zugreifen?
Was ist wenn ich diese Methode ausserhalb des Blockes schreibe, kann ich dann auf diese ebenfalls mit auto.fahre zugreifen???
Sorry für die Fragen, aber ich habe Java ist eine Insel usw. gelesen, aber irgendwie verstehe ich es nicht.

Also der Kern meiner Frage ist: Was muss im Konstruktorblock stehen, und in welcher Bezeiehung steht dieser Block zum konkreten Objekt? ( Hier:auto).
 

Wildcard

Top Contributor
Anonymous hat gesagt.:
Also der Kern meiner Frage ist: Was muss im Konstruktorblock stehen, und in welcher Bezeiehung steht dieser Block zum konkreten Objekt? ( Hier:auto).
Ein Konstruktor ist nichts anderes als eine spezielle Methode. In einer Methode kann man natürlich keine anderen Methoden definieren, also geht das:
Wenn ich eine Methode in diesem Block einfüge..also z.b. void fahren() kann ich dann mit auto.fahren drauf zugreifen?
natürlich nicht.
Wenn ich nun in diesem Konstruktorblock eine Variable deklariere z.b. int i; ist dies dann eine Objektvariable die zum Objekt auto gehört???
Nein. Der Konstruktor wird aber oft zum initialisieren verwendet:
Code:
class Blah
{
    int blupp;
 
    public Blah(int blupp)
    {
          this.blupp=blupp;
    }
}
 
G

Gast

Gast
Danke Wildcard für die Erklärung.
Also in meinem Fall hat das Objekt auto nichts mit dem Konstruktor Klasse () zu tun?
 
G

Gast-RoSiebzig

Gast
Dein ''auto'' is' eigentlich eine ''Klasse()'', die Du ''auto'' genannt hast. Genauer: Dein erstes Objekt vom Typ ''Klasse()'' namens ''auto''.

die klasse ''Klasse()'' ist ersma' nur 'ne leere Hülle .. das programm macht damit gar nix .. es 'weiß' quasi nichmal daß es eine ''Klasse()'' ist.
.. aber es steht damit die möglichkeit zur verfügung, ''Klassen()'' (bzw klassen vom Typ ''Klasse()'' ) zu erschaffen indem man sie instanziert.

erst, wenn man eine ''Klasse()'' instanziert, muß man auch einen namen dafür vergeben zB ''auto'' oder, also
Klasse auto=new Klasse();
erst jetzt existiert ein Objekt (namens) ''auto'' vom Typ ''Klasse()'' bzw vom typ der klasse ''Klasse()''.

Da fehlt außerdem noch 'ne geschwungene Klammer nach der auto-Zeile.
Dann schreibt man methoden klein den ersten Buchstaben.

class Klasse { // Klassendefinition

int i; // Klassenvariable
Klasse auto= new Klasse(); // Instanzierung + Initialisierung + Konstruktor (?)

klasse() { // Methodendefinition
..
}

}

das auto (oder besser: die ''Klasse()'' namens '''auto'') erbt jetzt - wenn ich's richtig verstanden hab' alles von seiner Vaterklasse ''Klasse()''
allerdings bin ich jetz' mit den Begriffen Instanzierung, Initialisierung und Konstruktor auch was durcheinandergekommen ..
 

Campino

Top Contributor
Gast-RoSiebzig: Ich denke du meinst das richtige, ich finde die Erklärung aber relativ missverständlich.
das auto (oder besser: die ''Klasse()'' namens '''auto'') erbt jetzt - wenn ich's richtig verstanden hab' alles von seiner Vaterklasse ''Klasse()''
Nein, dass auto erbt NICHTS von Klasse, dass auto ist ein Objekt vom Typ Klasse (ohne Klammern, mit Klammern ist das der Konstruktor!!).
Den Begriff der Vererbung verwendet man nur in bezug auf neue Klassen, die von ihrer Vaterklasse erben, nicht für Objekte des Typs Klasse.

Gast: Stell dir das vor wie Sandkuchen: Wenn du Sandkuchen backst, haben alle Sandkuchen, die aus derselben Form stammen, dieselbe Form.
Diese Form ist deine Klasse. Die Objekte sind die Sandkuchen. Der Konstruktor ist der Vorgang des "Mit-Sand-füllen-und-umdrehen", dass "backen" eines neuen Kuchen. Alle anderen Methoden (z.B. zerbröseln) führt der Sandkuchen (d.h. das Objekt) unabhängig vom Förmchen (der Klasse aus). Sie stehen in der Klassendefinition im class{}-Block, aber nicht im Konstruktor-Block, mit dem "backen" haben sie ja nichts zutun.
Eigenschaften des Sandkuchens sind durch das Förmchen definiert , deshalb stehen Eigenschaften im class{}-Block. Allerdings können sie auch z.B. vom verwendeten Sand abhängen, dieser währe dann ein Konstruktorargument wie Wildcards blubb und könnte genutzt werden um eine Eigenschaft zu initalisieren (d.h. einer Eigenschaft, die schon vorhanden ist, einen Wert zu geben) wie in Wildcards Beispiel.
Variablen die im Konstruktor-Block stehen werden nur für den Prozess des Erschaffens benötigt, danach sind die Werte weg.

Ansonsten gibt es noch Klassenfunktionen oder statische Funktionen. Diese gehören zur Klasse, also zur Form. Wenn ich meinem Bruder die Form über den Kopf hau nutze ich die Form, nicht den Sandkuchen, brauche also eine statische Klassenfunktion. Diese werden im class{}-Block mit den Schlüsselwort static definiert und sind dann über Klasse.Methode() aufrufbar.
Es gibt auch statische Eigenschaften, diese werden ebenfalls mit dem Schlüsselwort static definiert und gehören, genau, zur Klasse. Die Farbe des Förmchens wäre eine solche.

campino
(der jetzt weiß, warum Java-Programmierer nur in der Sandbox spielen dürfen ;) )
 

RoSiebzig

Mitglied
klasse, genial - und so niedlich - erklärt mit den sandförmchen!
bisher kannte ich nur die verkehrsmittel-auto-lkw-schiff-fahrrad variante :eek:]

.. ja, die klammern, die hab' ich zur unterscheidung gesetzt, bei der mißverständlichen benennung der klasse als ''Klasse'', damit ich nich' sätze krieg wie << .. die Klasse Klasse vom Typ Klasse>> (hätte bei mir geheißen <<.. die klasse namens ''Klasse()'' vom Typ ''Klasse()''>> .. jetz', wo ich blau hab' wär mir das eh' ncih' passiert :cool: )

die is' aber echt verwirrend, am anfang, die theorie .. wenn man 'ne sorte, 'ne art von, 'n "Typ", also meint, dann kann man sich nie sicher sein, daß das nich' 'n feststehender java begriff is' der definitionsgemäß, was anderes oder nur ähnliches meint ..
ähnlich kategorie, sorte, art, 'ne Ordnung, klasse von, .. da ham' wir's ..
dann is' alles ''Objekt'' in java, das auto, die klasse, ja das objekt selbst is' oberobjekt .. kein ''Ding'', sondern ein ''java.Object''

da kommt man nur drüber weg, indem man anfängt einfache beispiele abzuändern, 'rumzuprobieren und gucken, was passiert .. mit der Zeit weiß man dann ganz selbstverständlich, daß ein Typ mit dem rückgabewert zusammenhängt, jedes Objekt 'von einem Typ' ist, er im farblichen code blau ist, und am anfang jeder initialisierung steht und einem als int, float, double, long, String, oder Klasse, auto usw begegnet.
Und, daß eine Initialisierung kein Objekt von der Sorte Typ mit dem Namen Klasse ist! .. hehe
 

Strongheart

Mitglied
Code:
class Klasse { // Klassendefinition

int i; // Klassenvariable
Klasse auto= new Klasse(); // Instanzierung + Initialisierung + Konstruktor (?)

klasse() { // Methodendefinition
..
}

}
@ Ro-Siebzig: Die Instanzierung geht SO nicht. Die Anweisung "new Klasse()" ruft den Konstruktor auf, darf also nicht innerhalb der Klassendefinition stehen. Sonst würde sich die Klasse selbst aufrufen.

lg Strongheart
 

Wildcard

Top Contributor
Strongheart hat gesagt.:
@ Ro-Siebzig: Die Instanzierung geht SO nicht. Die Anweisung "new Klasse()" ruft den Konstruktor auf, darf also nicht innerhalb der Klassendefinition stehen. Sonst würde sich die Klasse selbst aufrufen.
Wer hat dir denn den Mist erzählt?
Warum sollte das nicht gehen?
 

Eldar

Aktives Mitglied
Naja ist schon schwierig..
Hier ruft jetzt ein
Klasse xyz()
ein
Klasse auto() auf, das dirket ein
Klasse auto()
aufruft...
Da lässt sich nichmal eine Abbruchbedingung eintragen.. innerhalb des Konstruktors oder einer anderen Methode mit entspechenden Bedingungen wär es einfach Rekursion, so...

Was passiert denn wenn "Klasse auto" ein Objekt vom gleichem Typ mit dem gleichen Namen erstellen will?
 

mephi

Bekanntes Mitglied
er erstellt ganz normal das objekt mit der referenz darauf. die 2 referenzen mit selben namen sind ja dann in anderen objekten. also geht das.. aber sieht so aus als ob man dann in eine endlosschleife kommt falls das so ausgeführt werden kann :)
 

Strongheart

Mitglied
Ich wollte es genau wissen und hab folgendes Testprogramm geschrieben:

Code:
public class Main {
    static int k;
    public static int n;
            int z;
        /*Constructor */
         Main(int j){
            n+=1 ;
            z = j+1;
            System.out.println(n);
            Main s = new Main(z);
     }

    public static void main(String[] args) {
        n=0;
        k=4;
        Main f = new Main(k);
    }
}
Der Konstruktor der Klasse erzeugt eine neue Instanz s seiner Klasse. Die statische Variable n zählt bei jedem aufruf des Konstruktors um eins hoch. Beim Lauf des Programms bekomme ich einen

Exception in thread "main" java.lang.StackOverflowError in der Zeile 11 nach 4122 Durchläufen.

Mit einer entsprechenden Abbruchbedingung müßte es ohne Fehlermeldung gehen. Ob es sinnvoll ist, ist eine andere Frage.
Wenn die Instanzierung in einer Methode steht (wie auch hier in der Methode main(String[] args) ), die begrenzt oft aufgerufen wird, entsteht noch keine Endlosschleife.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
X Möchte JAVA Lernen Java Basics - Anfänger-Themen 23
T Möchte Charwert 23C° mit java.util.Scanner einlesen macht Pr Java Basics - Anfänger-Themen 2
A Möchte Java - Chat in meine Homepage einbinden. Java Basics - Anfänger-Themen 4
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
N Erste Schritte HelloWorld möchte einfach nicht laufen Java Basics - Anfänger-Themen 11
P Nutzer entscheiden lassen, wie viele Zahlen dieser in ein Array eingeben möchte. Java Basics - Anfänger-Themen 6
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
L Anfängerin möchte Linie zeichnen Java Basics - Anfänger-Themen 8
I erstelle Vorschaubild mit der lib PDF-Renderer und möchte danach Dateiname ändern -> geht aber nicht Java Basics - Anfänger-Themen 0
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
J Möchte gern den Konsolen Output auf JTextPane umleiten Java Basics - Anfänger-Themen 4
A Interface Ich möchte eine Zeichenumgebung Java Basics - Anfänger-Themen 16
S Schleife möchte nicht funktionieren Java Basics - Anfänger-Themen 5
A Möchte mich vorstellen Java Basics - Anfänger-Themen 24
K Ich möchte in einem Text Editor cut, copy ,paste einfügen! Java Basics - Anfänger-Themen 2
E PopupMenu öffnet nicht so wie ich möchte Java Basics - Anfänger-Themen 2
M möchte in konstrukturaufruf eine bedingte anweisung haben. Java Basics - Anfänger-Themen 6
T Möchte ein neues Objekt erzeugen mit Wert von anderem Objekt Java Basics - Anfänger-Themen 9
X Habe Set, möchte List Java Basics - Anfänger-Themen 3
R Möchte einen anderen Hintergrund, weis nicht wie? Java Basics - Anfänger-Themen 7
D Ich möchte im JFrame einen Scrollbalken. Java Basics - Anfänger-Themen 5
7 Möchte lediglich zwei Zahlen addieren. Java Basics - Anfänger-Themen 5
M hilfe :} möchte servlet daten erfasssen-> hashmap speiche Java Basics - Anfänger-Themen 3
S Möchte Jave Applet vie URL laden NOOOB Java Basics - Anfänger-Themen 7
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 2
M Erste Schritte Java Primzahltester Java Basics - Anfänger-Themen 4
A csv Reader für Java? Java Basics - Anfänger-Themen 24
K Java - Enums Java Basics - Anfänger-Themen 30
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
Rookar java.lang.NoClassDefFoundError: org/json/JSONException Java Basics - Anfänger-Themen 2
Rookar Mit Button andere java öffnen Java Basics - Anfänger-Themen 4
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
I Backend in Java und Ansicht von Dateien in statische HTML Seiten? Java Basics - Anfänger-Themen 15
R Input/Output Verwendung des Euro-Zeichens in Java Java Basics - Anfänger-Themen 7
I Push Nachrichten von JAVA EE App an Mobile App Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben