Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen

B

Brahms18

Gast
Guten Abend.

Ich habe zwei Klassen, zum einem Autos, in der sich noch viele weitere Klasse befinden(BMW,Audi,Ford etc.) und eine seperate Klasse mit einer GUI.
Nun möchte ich in der Klasse mit der GUI ein Objekt aus der Klasse Autos( z.B. BMW ) erzeugen und eine Methode aufrufen.

Durch Recherche weiß ich, dass ich eine Methode aus einer anderen Klasse so aufrufen könnte.
Klassenname.Methode();

Jedoch sind die Klassen (BMW,Audi,Ford etc.) nicht public, sondern nur die Klasse Autos.
Und wenn ich BMW public mache, dann will er eine neue Datei (BMW.java) erstellen. Ich will aber nur mit den Dateien Autos.java und GUI.java auskommen.

Wie kann ich nun Objekte von Klassen aus einer anderen Klasse erzeugen?

Ich hoffe Ihr könnt mir helfen :)

Vielen Dank für jede Hilfe.
 
S

SlaterB

Gast
Java:
public class Auto {


   public class BMW {

   }
}
wäre denkbar, lies dich zu Inneren Klassen schlau,
Klassen übrigens möglichst immer in Einzahl benennen, Auto statt Autos
 
B

Brahms18

Gast
Mein eigentliches Programm handelt nicht von Autos, jedoch darf ich den Quellcode noch nicht öffentlich machen, deswegen verändere ich die Namen, vom Prinzip ist alles gleich, nur die Logik oder der Sinn stimmt vllt. nicht ganz.

Java:
public class Autos{

  public static void main(String[] args) {
   


  }
}
class Auto{

// Hier sind viele konstante Variablen

Auto(){

}

public double Mehtode1(){
return 0;

}
public void Methode2(){

}


}

class BMW extends Auto{

// paar Attribute

BMW(){

}

public double Mehtode1(){
return 0;

}
public void Methode2(){

}

class Irgendetwas extends BMW{

// paar Attribute

Irgendetwas(){

}

public double Mehtode1(){
return 0;

}
public void Methode2(){

}

etc.

Wenn ich nun public vor class BMW schreibe erhalte ich diese Fehlermeldung.
Java:
Fahrkarten.java:58:8: class Monatskarte is public, should be declared in a file named Monatskarte.java

Ich will aber nicht unzählige Dateien mehr haben, weil nun jede Klasse als .java vorhanden sein muss.
Oder geht es nicht anders?

Bzw. ich würde gerne nur Autos.java und GUI.java benötigen um das Programm zu starten.
Mache ich alle weiteren Klassen public müsste ich auch alle diese Klassen als Dateien (Klasse.java) benötigen um das Programm zu starten oder?

Dankeschön Slaster und Eike :)
 
B

Brahms18

Gast
Ergänzend muss ich sagen das alle inneren Klassen zwei Konstruktoren bestizen, einen leeren und einen an den Parameter übergeben werden.

Definiere ich sie ineinander bekomme ich leider diese Fehlermeldung bei beiden Konstruktoren der Klasse Irgendetwas.
Java:
 cannot reference this before supertype constructor has been called
 
B

Brahms18

Gast
Genau so sieht der Fehler bei mir aus.

Okay, habe die Klasse Autos rausgeschmissen und es sieht jestzt so aus.

Java:
public class Auto{
 
// Hier sind viele konstante Variablen

// Leerer Konstruktor
Auto(){
 
}
 
public double Mehtode1(){
return 0;
 
}
public void Methode2(){
 
}
 
 
// Hier jetzt keine Klammer mehr
 
class BMW extends Auto{
 
// paar Attribute
 
BMW(){
 
}

BMW(Parameter1, Parameter2){
Methode2();
}
 
public double Mehtode1(){
return 0;
 
}
public void Methode2(){
 
}

}
 
class Irgendetwas extends BMW{
 
// paar Attribute


// leerer Konstruktor 
Irgendetwas(){
 
}

Irgendetwas(Parameter1){
Methode2;
}


 
public double Mehtode1(){
return 0;
 
}
public void Methode2(){
 
}

} // Hier wird die Klasse Auto geschlossen

So sieht es nun aus und dann erhalte ich den oben genannten Fehler bei beiden Konstrukoren der Klasse Irgendetwas.
 
B

Brahms18

Gast
Eine Klammer habe ich ganz unten noch vergessen also:

Java:
...
...

public void Methode2(){
 
}

}
 
} // Hier wird die Klasse Auto geschlossen
 
S

SlaterB

Gast
ja, Pech, noch eine weitere Vererbung, dann trifft exakt die Situation wie im Link zu, Lösung steht doch da,
wobei vielleicht zu hoch um selber auszuprobieren, habe ich bisher auch noch nicht gesehen, aber scheint zu funktionieren:

Java:
public class Auto {

	// Hier sind viele konstante Variablen

	// Leerer Konstruktor
	Auto() {

	}

	public double Mehtode1() {
		return 0;

	}

	public void Methode2() {

	}

	// Hier jetzt keine Klammer mehr

	class BMW extends Auto {

		// paar Attribute

		BMW() {
			
		}

		BMW(String a, String b) {
			Methode2();
		}

		public double Mehtode1() {
			return 0;

		}

		public void Methode2() {

		}

	}

	class Irgendetwas extends BMW {

		// paar Attribute

		// leerer Konstruktor
		Irgendetwas() {
			Auto.this.super();
		}

		Irgendetwas(String a) {
			Auto.this.super();
			Methode2();
		}

		public double Mehtode1() {
			return 0;

		}

		public void Methode2() {

		}
	}
} // Hier wird die Klasse Auto geschlossen

eine einfachere Lösung und standardmäßig durchaus auch zu empfehlen wäre alternativ, die inneren Klassen als static zu definieren,
also [c]static class BMW extends Auto { [/c],

frag mich nicht was das bedeutet, einerseits könnte ich es gar nicht exakt definieren, nur einen bestimmten Effekt nennen,
andererseits ja: 'mache dich zu Inneren Klassen schlau' ;)
 
B

Brahms18

Gast
Ach ja, eine Frage noch:

Java:
Beispiel   Die Klasse Haus besitzt die innere Element-Klasse Zimmer.

class Haus
{
  class Zimmer
  {
  }
}


Um von außen ein Objekt von Zimmer aufzubauen, schreiben wir:

Haus h = new Haus();
Zimmer z = h.new Zimmer();

Das Kompilieren klappt, jedoch habe ich noch kein Objekt aus der GUI Klasse erzeugt.
Müssen beide Klassen nur in einem Ordner sein, damit ich das obige Beispiel durchführen kann?

Also ich will ein Objekt von Zimmer erzeugen, befinde mich aber in einer anderen Klasse (GUI-Klasse).
Kann die Gui-Klasse einfach durch :

Haus h = new Haus();
Zimmer z = h.new Zimmer();

ein Objekt von Zimmer erzeugen, oder muss man i.was in die GUI-Klasse importieren?

Danke.
 

hdi

Top Contributor
Die GUI-Klasse muss sich zwangsläufig im selben Package befinden wie die Haus-Klasse, von daher musst du nichts importieren.
 
S

SlaterB

Gast
probiere es doch erst aus, gibt es Fehlermeldungen?
du benutzt nicht zufällig eine IDE mit automatischen Imports?

Eclipse muss man nur downloaden und starten.., ok wenn man es nicht kennt ist das schon auch eine gewisse Arbeit alles kennenzulernen

bei static kann man übrigens auf das h in
Zimmer z = h.new Zimmer();
verzichten, das ist genau der eine entscheidende Punkt
 
B

Brahms18

Gast
Hey hdi,

versteht man unter selbem Package, den gleichen Ordner?
Also beide Klassen müssen sich nur im selben Ordner befinden?

Bei mir siehts so aus:

Java:
Auto a = new Auto();
BMW z = a.new BMW();


In der 2. Zeile gibt er mir den Fehler "cannot find symbol", obwohl die Klasse BMW als public deklariert ist.

Ich benutze den JavaEditor.
 

hdi

Top Contributor
versteht man unter selbem Package, den gleichen Ordner?
Ja. Die Toplevel Klasse (Auto) muss eine ensptrechende package-Deklaration haben:
Code:
package ordnerName; // erste Zeile in der Datei

Also beide Klassen müssen sich nur im selben Ordner befinden?
Ja, da deine Auto-Klasse, zumindest gemäß dem letzten Code den du gepostet hast, nicht public ist. Das bedeutet, dass nur Klassen die im selben Package liegen Zugriff darauf haben. Wenn auch Auto public ist, dann kann die GUI-Klasse auch in einem anderen Ordner liegen, muss aber die Auto-Klasse dann importieren:
Code:
import orderName.Auto; // unter der package-Deklaration

In der 2. Zeile gibt er mir den Fehler "cannot find symbol", obwohl die Klasse BMW als public deklariert ist.
Es muss Auto.BMW heißen - wenn du es nicht ausschreiben willst musst du die innere Klasse durchaus explizit importieren:
Code:
import ordnerName.Auto.BMW;

Und vor dem a(a.new BMW();) noch zusätzlich der Fehler:
"qualified new of static class"
Hä? Das ist ungültige Syntax, was sollen die Klammern da drumrum? Wenn die Klasse BMW statisch ist kannst du sie nicht über die a-Referenz ansprechen, sondern über die A-Klasse, also:
Code:
new Auto.BMW();
 
B

Brahms18

Gast
Wow, mit
Java:
new Auto.BMW();
geht es einwandfrei.

Aber warum muss ich nun nicht in dieser Form eingeben?

Java:
Auto a = new Auto();
BMW z = a.new BMW();

BMW ist doch ein inneres Element von Auto und nach dem Beispiel müsste es wie oben angeben werden..

Danke hdi ;)
 

hdi

Top Contributor
Wenn Y eine innere statische Klasse von X:

Java:
new X.Y();

Wenn Y eine innere nicht-statische Klasse von X:

Java:
new X().new Y();

Es gibt einen großen (logischen) Unterschied zwischen statischen Klassen und nicht-statischen Klassen. Da steckt also weit mehr dahinter als dieser syntaktische Unterschied einer Instanz-Erzeugung. Du solltest dir den Unterschied erstmal klar machen bevor du weiter mit inneren Klassen arbeitest.
 
B

Brahms18

Gast
Okey, den kenne ich leider noch nicht.
Bin auch noch Anfänger.. :/

Aber es klappt und dafür danke ich dir hdi und auch Slatter nochmal :)

Gute Nacht.
 

hdi

Top Contributor
Okey, den kenne ich leider noch nicht [...] Aber es klappt [...] Gute Nacht!
Grrr... :noe: Da bereue ich doch glatt, dir "geholfen" zu haben. Du solltest verstehen was du tust, und nicht einfach ahnungslos am Code rumbasteln bis er kompiliert. Das bringt dir nix. Und es vergeht einem auch schnell die Lust jemandem zu helfen der eigentlich nur den richtigen Code will, ohne ihn zu verstehen.. Du solltest deine Einstellung zum Thema Java lernen nochmal überdenken. So wird das nix.
 
B

Brahms18

Gast
Genau Slatter, so funktioniert es auch.

Oh hdi, so meinte ich das nicht.
Natürlich hätte ich dich gerne gefragt, was denn dieser Unterschied zwischen statistischen und nicht statistischen Klassen ist, jedoch habe ich es mir verkniffen, weil ich meinen Erfahrungen nach, sowieso sofort darauf angewiesen werde mich im Internet schlau zu machen.

Und da es schon so spät ist und ich müde bin habe ich mich einfach für die Hilfe bedankt, da es klappt.

Ich kenne dich noch von Youtube und deinen Tutorials bzw. deinem Java-Projekt und von daher wollte ich nicht deine kostbare Zeit verschwenden :p
 

hdi

Top Contributor
Ich kenne dich noch von Youtube und deinen Tutorials bzw. deinem Java-Projekt und von daher wollte ich nicht deine kostbare Zeit verschwenden :p
Das ist Quatsch, verschwendet ist sie wenn ich hier abhäng aber keine Fragen kommen ;) Der Post sollte dich nicht so angreifen wie's vllt rüberkam. Es ist ja i.O. wenn du für heute genug hast bzw erstmal selbst recherchieren willst. Hat sich halt so angehört als hättest du das Thema damit abgeschlossen. Egal, ich mach für heute auch Schluss, mein Fernseher sehnt sich nach mir :D
 
B

Brahms18

Gast
Okey, dann kommt morgen eine Frage oder eine Antwort zum Thema "Unterschied zwischen statistischen und nicht statistischen Klassen" :)

Freut mich, dass du dir für jeden Zeit nimmst.

Viel Spaß beim Tv schaun ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7
M Von einer Klasse aus, Objekte einer anderen Klasse verändern. Java Basics - Anfänger-Themen 2
K in Konstruktor neue Objekte einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
T Objekte einer Klasse einer anderen Klasse übergeben Java Basics - Anfänger-Themen 5
G auf Objekte in einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 4
P Zugriff auf Objekte einer anderen Klasse Java Basics - Anfänger-Themen 1
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
M Objekte mit einer Schleife mehrmals erzeugen Java Basics - Anfänger-Themen 17
J Array Objekte einer Klasse zuordnen Java Basics - Anfänger-Themen 15
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
BobbGott Klassen 2 "Objekte" in einer Methode - wie? Java Basics - Anfänger-Themen 7
J Objekte in einer Liste Java Basics - Anfänger-Themen 3
Z OOP Objekte einer Klasse weiteren Klassen zur Verfügung stellen Java Basics - Anfänger-Themen 17
A Objekte einer ArrayList auslesen und auf der Konsole ausgeben Java Basics - Anfänger-Themen 2
F Objekte einer Klasse verwalten Java Basics - Anfänger-Themen 10
M Erste Schritte mehrere Objekte aus einer Klasse Java Basics - Anfänger-Themen 4
B OOP Objekte erzeugen mit Hilfe einer for Schleife Java Basics - Anfänger-Themen 29
F Adressverwaltungsprogramm: Objekte einer Klasse in Array Java Basics - Anfänger-Themen 6
M Input/Output Objekte in einer Textdatei ablegen (Highscore) Java Basics - Anfänger-Themen 9
C Methoden Objekte mit Hilfe einer Schleife in einer ArrayList erzeugen Java Basics - Anfänger-Themen 26
C Mehrere Objekte mit einer Methode ausgeben Java Basics - Anfänger-Themen 17
S OOP Foreach für Objekte einer Klasse? Java Basics - Anfänger-Themen 3
S Mehrere Objekte einer Klasse automatisch erzeugen Java Basics - Anfänger-Themen 15
I Bestimmte Objekte einer Liste hinzufügen Java Basics - Anfänger-Themen 16
F Aller Objekte einer Klasse Java Basics - Anfänger-Themen 9
D Erste Schritte Viele Objekte einer Klasse "verwalten" Java Basics - Anfänger-Themen 17
J Klassen Objekte einer Klasse Java Basics - Anfänger-Themen 13
X Collections Reihenfolge bestimmter Objekte in einer ArrayList verändern Java Basics - Anfänger-Themen 2
I OOP Objekte in einer ArrayList Java Basics - Anfänger-Themen 5
W Objekte in einer Array sortieren Java Basics - Anfänger-Themen 3
O Ungleiche Objekte in einer Schleife erstellen Java Basics - Anfänger-Themen 3
T OOP Objekte einer Klasse mit schleife auslesen Java Basics - Anfänger-Themen 7
I Objekte einer Liste einer weiteren List anhängen Java Basics - Anfänger-Themen 8
L Mehrere Objekte einer Klasse aber nur einmal Konstruktor aufruf? Java Basics - Anfänger-Themen 2
D Wie Objekte einer Unterklasse erstellen? Java Basics - Anfänger-Themen 14
S OOP kann ich von einer Klasse aus auf andere Objekte zugreifen? Java Basics - Anfänger-Themen 7
Semox Sind Objekte in einer ArrayList überschreibbar? Java Basics - Anfänger-Themen 2
J Datensätze aus einer DB als Objekte erzeugen und in ArrayList abspeichern Java Basics - Anfänger-Themen 9
M Objekte aus einer Arraylist löschen Java Basics - Anfänger-Themen 7
A [gelöst]Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 9
L Objekte in einer ArrayList vergleichen Java Basics - Anfänger-Themen 19
K Objekte innerhalb einer Klasse Java Basics - Anfänger-Themen 2
N Verständnisproblem: Mehrere Objekte einer Klasse erstellen Java Basics - Anfänger-Themen 2
H Objekte in einer Hashtable am einfachsten sortieren Java Basics - Anfänger-Themen 13
K Vergleich zweier Objekte in einer HashMap Java Basics - Anfänger-Themen 6
E Zugriff auf Objekte in einer ArrayList Java Basics - Anfänger-Themen 3
J Objekte in einer for schleife referenzieren Java Basics - Anfänger-Themen 7
A auf objekte in einer bereits bestehenden klasse zugreifen Java Basics - Anfänger-Themen 2
B objekte einer klasse. Java Basics - Anfänger-Themen 14
C Mehrere Objekte in einer Liste einfügen und serialisieren Java Basics - Anfänger-Themen 1
L 2 Objekte einer Klasse Java Basics - Anfänger-Themen 8
J Objekte einer ArrayList in eine Tabelle einfügen Java Basics - Anfänger-Themen 2
B Wie kann ich in einer Schleife Objekte erzeugen? Java Basics - Anfänger-Themen 5
G Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 2
C Objekte einer Klasse wiederfinden Java Basics - Anfänger-Themen 4
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben