Klassen Objekt mit einem Namen von einer bestimmten Klasse instanziieren

KeinUsername

Mitglied
Hallo,

ich versuche gerade folgende Funktionalität zu implementieren, komme aber nicht weiter, da der Compiler nicht will, wie ich will ;(

Ich habe insgesamt drei Klassen Standard, Extended und Start.
In der Klasse Start befindet sich die main Methode, die die Interaktion über die Konsole ermöglicht.

Nun will ich zu Beginn vom User wissen, ob er mit den Methoden der Klasse Standard oder den Methoden der Klasse Extended arbeiten möchte. Je nachdem instanziiere ich ein Objekt einer der beiden Klassen:

Java:
[code]if(auswahl == 1)
Code:
Extended objekt = new Extended();
Code:
else
Code:
Standard objekt = new Standard();

Danach wird genau derselbe Code ausgeführt, z.B.
Java:
objekt.methodeA();
jedoch mit einem anderen Ergebnis, da die Funktionalität in den beiden Klassen unterschiedlich umgesetzt wurde.

Nun meine Frage: Warum klappt das nicht? Warum kann ich nicht ein Objekt namens objekt von der einen bzw. anderen Klasse erstellen? Kann ich im Verlaufe des Programms irgendwie erreichen, dass mein Objekt namens objekt durch ein Objekt der anderen Klasse mit demselben Namen ersetzt wird?

Vielen Dank im Voraus!
 
I

irgendjemand

Gast
mal davon abgesehen das bei

Java:
if(boolean)
{
	<T> object=new <T>();
}
else
{
	<T> object=new <T>();
}

die objektvariable außerhalb des if/else blocks garnicht verfügbar ist wäre das einfachste wohl gegen ein interface zu arbeiten
 

TKausL

Top Contributor
mal davon abgesehen das bei

Java:
if(boolean)
{
	<T> object=new <T>();
}
else
{
	<T> object=new <T>();
}

die objektvariable außerhalb des if/else blocks garnicht verfügbar ist wäre das einfachste wohl gegen ein interface zu arbeiten
Da ich annehme, dass der TE grade eine Aufgabe von einem Javakurs oder ähnliches bearbeitet nehme ich sogar an, dass die beiden Klassen entweder ein Interface implementieren oder von einer anderen Klasse abstammen.
 
I

irgendjemand

Gast
naja ... so lange er es nicht sagt muss man erstmal davon ausgehen das es nicht so ist

war aber auch nicht sinn meines posts ... ich wollte lediglich anmerken das wenn man

Java:
<T> object=new <T>();

in irgend einen block steckt die variable außerhalb nicht mehr verfügbar ist ... und durch die konkrete typ-angabe auch globale variablen verdeckt *thema : variablen shadowing*
 

KeinUsername

Mitglied
Die beiden Klassen haben jeweils 300 Zeilen und ich denke nicht, dass es an ihnen liegt. Wenn du sie dennoch sehen möchtest, kann ich sie hier posten.

Es sind im Grunde genommen nur zwei Klassen Standard und Extended die ein und dasselbe Interface implementieren, jedoch auf unterschiedliche Art und Weise (beide besitzen genau dieselben Methoden und alles).

Das Problem liegt nur darin, dass der Compiler in Eclipse nicht zulässt, dass ich in meiner if-Verzweigung entweder ein Objekt Standard objekt oder ein Objekt Extended objekt erzeuge, da die beiden denselben Namen haben (aber niemals beide erzeugt werden würden).
 

TKausL

Top Contributor
Das Problem liegt nur darin, dass der Compiler in Eclipse nicht zulässt, dass ich in meiner if-Verzweigung entweder ein Objekt Standard objekt oder ein Objekt Extended objekt erzeuge, da die beiden denselben Namen haben (aber niemals beide erzeugt werden würden).

Das wage ich zu bezweifeln.




Dann mach es doch so:

Java:
Interface object;
if(auswahl == 1){
    objekt = new Extended();
}else{
    objekt = new Standard();
}
object.doanything();


Anstatt "Interface" musst du natürlich den Namen des Interfaces einsetzen.
 

KeinUsername

Mitglied
mal davon abgesehen das bei

Java:
if(boolean)
{
	<T> object=new <T>();
}
else
{
	<T> object=new <T>();
}

die objektvariable außerhalb des if/else blocks garnicht verfügbar ist wäre das einfachste wohl gegen ein interface zu arbeiten

Danke! Nun weiß ich wenigstens warum das so nicht klappt. Wusste nicht, dass das Objekt in diesem Falle nur innerhalb der Verzweigung verfügbar ist.

Und in der Tat bearbeite ich gerade eine Übungsaufgabe wie ihr schon vermutet habt. Jetzt weiß ich warum es nicht klappt aber wie könnte ich denn das was ich eigentlich will implementieren?

Ich könnte zwar zwei verschiedene Objekte erzeugen und die ganze main Methode einmal für objekt1 und für objekt2 kopieren, das wäre aber eine total übertriebene Redundanz und ich bin mir sicher, dass es auch anders gehen muss.
 

TKausL

Top Contributor
Danke! Nun weiß ich wenigstens warum das so nicht klappt. Wusste nicht, dass das Objekt in diesem Falle nur innerhalb der Verzweigung verfügbar ist.

Und in der Tat bearbeite ich gerade eine Übungsaufgabe wie ihr schon vermutet habt. Jetzt weiß ich warum es nicht klappt aber wie könnte ich denn das was ich eigentlich will implementieren?

Ich könnte zwar zwei verschiedene Objekte erzeugen und die ganze main Methode einmal für objekt1 und für objekt2 kopieren, das wäre aber eine total übertriebene Redundanz und ich bin mir sicher, dass es auch anders gehen muss.

Siehe meinen letzten Post...
 

KeinUsername

Mitglied
Das wage ich zu bezweifeln.




Dann mach es doch so:

Java:
Interface object;
if(auswahl == 1){
    objekt = new Extended();
}else{
    objekt = new Standard();
}
object.doanything();


Anstatt "Interface" musst du natürlich den Namen des Interfaces einsetzen.

Vielen Dank, das hat mein Problem gelöst. Kannst du mir erklären warum es nicht geht wenn ich das Objekt entweder von der einen oder der anderen Klasse instanziieren will? Ich meine die beiden Klassen implementieren doch dasselbe Interface.
 

TKausL

Top Contributor
Das problem ist, dass du die Variablen INNERHALB der if definieren musst, diese aber NACH der if nichtmehr zur verfügung stehen

Java:
{
    {
        {
            int a = 1;
        } //int wird mit beendigung des Codeblocks vernichtet
     //int ist also hier schon nichtmehr verfügbar
    }
}
Keine Variable kommt aus einem Codeblock raus. Eine Variable die innerhalb eines Codeblocks definiert wurde, wird vernichtet sobald der Codeblock zuende geht (also auch das ende der if).

Somit muss die Variable schon VOR dem if definiert werden, und innerhalb nurnoch gefüllt werden.
Und da du 2 verschiedene Klassen Instanzierst (Extendet passt nicht in Standart, Standart passt nicht in Extendet) musst du als Datentyp einen gemeinsamen, also das gemeinsame Interface wählen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
N LocalTime einem Objekt zuweisen Java Basics - Anfänger-Themen 2
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
H Objekt aus einem Array löschen Java Basics - Anfänger-Themen 1
R Value von einem JSON-Objekt ausgeben Java Basics - Anfänger-Themen 4
R Vererbung werte von einem Objekt aus ein anderes übertragen Java Basics - Anfänger-Themen 7
N OOP 2 versch. Modi in einem Objekt de/aktivieren Java Basics - Anfänger-Themen 10
Arif OOP Die Bindung zwischen einem äußeren und einem inneren Objekt Java Basics - Anfänger-Themen 2
D Von einem Objekt auf Properties zugreifen Java Basics - Anfänger-Themen 3
K Klassen Nachträglich ein Objekt einem anderen zuweisen, geht das? Java Basics - Anfänger-Themen 2
L Objekt mit einem Objekt als Instanzvariable Java Basics - Anfänger-Themen 2
R Vererbung Variable in einem übergeordneten Objekt ändern Java Basics - Anfänger-Themen 4
Q Methode eines bereits erzeugten Objekts von einem anderen Objekt aus aufrufen Java Basics - Anfänger-Themen 6
Z Greenfoot Variable in einer Datei und nicht in einem Objekt/World speichern Java Basics - Anfänger-Themen 1
D Ein Objekt in einem Baum finden und ausgeben. Java Basics - Anfänger-Themen 4
E Attribute von einem Objekt einer anderen Klasse ändern Java Basics - Anfänger-Themen 4
J Methoden Einzelnen Wert aus Objekt aus einem Array auslesen und danach sortieren Java Basics - Anfänger-Themen 8
W OOP Objekte in einem Objekt Java Basics - Anfänger-Themen 2
X Objekt erzeugen aus einem XML Datei Java Basics - Anfänger-Themen 15
S OOP Einem Objekt ein Objekt zuweisen Java Basics - Anfänger-Themen 6
D OOP Zugriff auf eine Klasse aus einem Interface-Objekt Java Basics - Anfänger-Themen 7
P Einem Double-Objekt einen float-Wert zuweisen Java Basics - Anfänger-Themen 2
B In- und Output von XML-Daten in und aus einem Objekt Java Basics - Anfänger-Themen 6
J OOP Ungewollte Änderung in einem Objekt Java Basics - Anfänger-Themen 7
C Objekt einem anderen Objekt zuweisen Java Basics - Anfänger-Themen 9
M Vererbung Objekt automatisch einem Set zuordnen... Java Basics - Anfänger-Themen 7
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
K Verschiedene (Thread) Objekt-Positionen (int) in einem Array zusammenfassen Java Basics - Anfänger-Themen 3
N Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
J Zuordnung von Variablen einem ArrayList-Objekt Java Basics - Anfänger-Themen 18
W Fehler bei einem BitSet in einem Objekt Java Basics - Anfänger-Themen 2
C Übergeben von Variablen von einem Objekt zum nächsten Java Basics - Anfänger-Themen 5
S Mehrere Objekte einem Objekt zuordnen Java Basics - Anfänger-Themen 3
L getDuration() von einem javax.media.player objekt problem. Java Basics - Anfänger-Themen 3
K Eindeutige Instanzen von einem Objekt Java Basics - Anfänger-Themen 13
P Objekt aus einem Class Objekt erstellen? Java Basics - Anfänger-Themen 10
L Objekt wieder aus einem Vector bekommen! Java Basics - Anfänger-Themen 14
R Vererbung von Listenern für jedes Objekt in einem Frame Java Basics - Anfänger-Themen 6
halla Objekt in einem anderen Objekt speichern und drauf zugreifen Java Basics - Anfänger-Themen 8
D Zu einem Objekt verzweigen Java Basics - Anfänger-Themen 25
F Aktualisieren einer Liste von einem entfernten Objekt aus. Java Basics - Anfänger-Themen 11
K Array von einem eigenen Objekt erstellen Java Basics - Anfänger-Themen 5
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
Say Objekt Java Basics - Anfänger-Themen 4
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
B Objekt in Klassendiagramm an fremdes Objekt weiterreichen? Java Basics - Anfänger-Themen 6
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
amelie123456 Objekt Farbe Quellcode Java Basics - Anfänger-Themen 4
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
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
O Warum bekommen wir nicht die Referenz vom zurückgegebenen Objekt? Java Basics - Anfänger-Themen 4
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
melaniemueller Fernseher als Objekt Java Basics - Anfänger-Themen 9
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
S JavaFX - Objekt an neue Stage übergeben Java Basics - Anfänger-Themen 12
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
P Objekt in mehreren Methoden verwenden. Java Basics - Anfänger-Themen 3
S Aufzurufendes Objekt Java Basics - Anfänger-Themen 3
CptK Überprüfen ob übergebenes Objekt zu Generics passt Java Basics - Anfänger-Themen 2
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
L Objekt an Methode übergeben Java Basics - Anfänger-Themen 4
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
J Y-Koordinate von GUI-Objekt bestimmen Java Basics - Anfänger-Themen 2
M Auf erstelltes Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 5
H Referenz Objekt aufrufen Java Basics - Anfänger-Themen 12
M Objekt mit eindeutiger ID löschen, das nächste Objekt hat dann diese ID Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben