Unterschied zwischen Referenz auf Objekt/Instanz von Objekt

Status
Nicht offen für weitere Antworten.

dyn

Mitglied
Hi!
Mal ne allgemeine Frage:
Macht es einen Unterschied, wenn ich dem Konstruktor einer Klasse die Referenz auf eine andere Klasse übergebe ODER von der eigentlich zu referenzierenden Klasse stattdessen einfach eine Instanz bilde, um auf methoden, usw. zugreifen zu können?

also quasi statt:

Klasse klasse;

public andereKlasse(Klasse classe)
{
klasse = classe;
}


->

public andereKlasse(Klasse classe)
{
Klasse klasse = new Klasse();
}


?? sorry für eventuelle syntaxfehler! ;)
 

byte

Top Contributor
ja das hat große auswirkungen. denn wenn sich im ersten fall die instanz classe ändert, dann hat das auch auswirkungen auf andereKlasse (oh man, deine namensgebung ist echt ungeschickt ;) ).

im zweiten fall ist der parameter im konstruktor dann auch total sinnlos, weil du ihn ja gar nicht liest. du erzeugst ein neues objekt, das bedeutet, dass wenn sich im zweiten fall classe ändert, hat das keinerlei auswirkungen auf andereKlasse.
 

L-ectron-X

Gesperrter Benutzer
Ich hab nur den Titel gelesen und zu mir gesagt: "Da is was faul." :wink:
Also: Eine Klasse ist der Bauplan für ein Objekt. Alles was in der Klasse "auf dem Papier" steht, wird bei Instanziierung "zum Leben erweckt" bzw. in die "reale Welt" geholt.
Objekt und Instanz ist ein und das selbe.
Eine Referenz auf ein Objekt ist eine Art Zeiger auf eine Speicheradresse in der VM. An dieser Speicheradresse befindet sich das Objekt, auf welches die Referenz zeigt.
 

TRunKX

Bekanntes Mitglied
Objekt und Instanz ist ein und das selbe.

Das stimmt so nicht! Nach Smalltalk wo das mit den " Klassen " angefangen hat ist ein Objekt eine Klasse und ein Modul eine Instanz diese NAmensgebung ist sehr dumm da man in Smalltalk damals noch nicht von Klassen sprach!

Am besten erklärt wird es erklärt durch Klasse und Instanz. Und da hat L-ectron-X vollkommen recht eine Klasse ist der Bauplan und eine Instanz ist eine gebaute existierende Klasse.

Wenn du also eine Instanz übergibst dann kannst du diese dort von wo du sie übergibst bereits genutzt haben. Instanzierst du erst in der aufgerufenen bzw. Instanzierten Klasse dann kannst du die Methoden der neu erstellten Klasse auch nur dort nutzen. Ich empfehle hier mal ien buch zum Thema Objektoreitierung das erklärt den Mist ganz gut. Nach einer gewissen Zeit als JAVA Programmierer ist man damit so vertraut das man sich darüber keine Gedanken macht!
 

dyn

Mitglied
hey!
die grundlagen der OOP sind mir klar. ich kenne den unterschied zwischen klasse und objekt.

ich hatte leider bei dem code snippet einen fehler eingebaut.


mit dem ersten schnipsel möchte ich eine referenz auf das objekt klasse erstellen, damit ich in der klasse andereKlasse auf sie zugreifen kann.

Code:
Klasse klasse;

public andereKlasse(Klasse classe)
{
klasse = classe;
}

im zweiten schnipsel erstelle ich eine neue instanz der klasse Klasse.
die frage die sich mir nun stellt ist, ob ich nun auch auf die instanz der klasse, also auf das objekt klasse zugreifen kann, als ob ich eine referenz darauf übergeben hätte!

Code:
public andereKlasse()
{
Klasse klasse = new Klasse();
}

was mich auch interessieren würde, wäre, wieso man die referenz dem konstruktor so komisch übergeben muss.
wieso reicht nicht einfach das deklarieren der instanzvariable klasse(ist das richtig formuliert?), um dann auf das objekt zuzugreifen.

Code:
Klasse klasse;
 

Sky

Top Contributor
Ich verstehe nicht so recht, was Du willst! Folgende Alternativen stehen Dir zu wahl. Welche Du nimmst kommt auf deinen Anwendungsfall an:
Code:
//Klasse als Instanzvariable; Objekt wird in Klasse1 erzeugt.
class Klasse1 {
  Klasse klasse;
  public Klasse1() {
    this.klasse = new Klasse();
  }
}

//Klasse als Instanzvariable; Objekt wird irgendwo anders erzeugt.
class Klasse2 {
  Klasse klasse;
  public Klasse2( Klasse klasse ) {
    this.klasse = klasse;
  }
}

//Objekt wird in Klasse3 erzeugt und ist nur im Konstruktor verfügbar.
class Klasse3 {
  public Klasse3() {
    Klasse klasse = new Klasse();
  }
}
 

dyn

Mitglied
Wenn du also eine Instanz übergibst dann kannst du diese dort von wo du sie übergibst bereits genutzt haben. Instanzierst du erst in der aufgerufenen bzw. Instanzierten Klasse dann kannst du die Methoden der neu erstellten Klasse auch nur dort nutzen. Ich empfehle hier mal ien buch zum Thema Objektoreitierung das erklärt den Mist ganz gut. Nach einer gewissen Zeit als JAVA Programmierer ist man damit so vertraut das man sich darüber keine Gedanken macht!

Aaah, danke, das hatte ich quasi überlesen. Das erklärt ja den Unterschied. Danke! :)
 

L-ectron-X

Gesperrter Benutzer
dyn hat gesagt.:
die frage die sich mir nun stellt ist, ob ich nun auch auf die instanz der klasse, also auf das objekt klasse zugreifen kann, als ob ich eine referenz darauf übergeben hätte!

Code:
public andereKlasse()
{
Klasse klasse = new Klasse();
}
Nein, kannst du nicht.
Zunächst erst mal ist es ein völlig neues, eigenes Objekt, welches außerdem nur innerhalb des Konstruktors sichtbar ist. Wenn es auch in anderen Methoden deiner Klasse verfügbar sein soll, musst du es als Argument einer anderen Methode übergeben.

dyn hat gesagt.:
wieso reicht nicht einfach das deklarieren der instanzvariable klasse(ist das richtig formuliert?), um dann auf das objekt zuzugreifen.

Code:
Klasse klasse;
Weil eine Instanzvariable eines benutzerdefinierten Datentyps immer den Wert null bei Deklaration erhält. Im weiteren Programmverlauf könnte sie ohne Definition bzw. Initialisierung nicht benutzt werden.
Es wird vom Compiler lediglich Platz für ein Objekt des Typs im Speicher reserviert.
 

dyn

Mitglied
ah. ok! vor allem der hinweis, dass diese instanzvariablen immer den wert null bekommen ist doch mal sehr hilfreich!
danke!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
B Was ist der unterschied zwischen Singleton und Strategy? Java Basics - Anfänger-Themen 6
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
tanja Der Unterschied Zwischen Arrays in Java und ADA Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
V Unterschied zwischen J2EE und JEE ?? Java Basics - Anfänger-Themen 1
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
A Unterschied zwischen Checked und unchecked Exception Java Basics - Anfänger-Themen 3
C Unterschied zwischen Polymorphie und Typcasting Java Basics - Anfänger-Themen 10
G Unterschied zwischen den Datenstrukturen Java Basics - Anfänger-Themen 2
M Unterschied zwischen . Compiler und JIT-Compiler,Hotspot-VM Java Basics - Anfänger-Themen 2
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
I_Oscuridad Unterschied zwischen Objektorientiert und prozedural ? Java Basics - Anfänger-Themen 8
G Was ist der unterschied zwischen return und ? Java Basics - Anfänger-Themen 3
G Unterschied zwischen Java 2 bis 6 Java Basics - Anfänger-Themen 12
G Unterschied zwischen SwingWorker und "normalem" Th Java Basics - Anfänger-Themen 3
J Unterschied zwischen 2 Grafik Methoden Java Basics - Anfänger-Themen 2
G unterschied zwischen in.read() und in.read(byte [] b, int. Java Basics - Anfänger-Themen 3
G Unterschied zwischen SQL Timestamp und Java Java Basics - Anfänger-Themen 2
A Unterschied zwischen HashMap und Hashtable Java Basics - Anfänger-Themen 20
G Unterschied zwischen Assoziation, Aggregation u. Komposition Java Basics - Anfänger-Themen 7
G Unterschied zwischen & und && Java Basics - Anfänger-Themen 1
G Unterschied zwischen Ant und Maven Java Basics - Anfänger-Themen 9
K Unterschied zwischen Color.white und Color.WHITE? Java Basics - Anfänger-Themen 4
A Unterschied zwischen String & Stringbuffer! Java Basics - Anfänger-Themen 14
O Unterschied zwischen static und public Java Basics - Anfänger-Themen 2
G Was ist der Unterschied zwischen length und length()? Java Basics - Anfänger-Themen 7
N Unterschied zwischen Beans finden Java Basics - Anfänger-Themen 2
L Unterschied zwischen Objekten, Arrays und Strings Java Basics - Anfänger-Themen 2
G Unterschied zwischen Integer und int in java Java Basics - Anfänger-Themen 8
C Unterschied zwischen, Applet, Java und JavaScript Java Basics - Anfänger-Themen 3
K gibt es einen unterschied zwischen .JAVA und .java ? Java Basics - Anfänger-Themen 4
ven000m Unterschied zwischen: ADT & generischer Programmierung Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
M Unterschied zwischen J2SE 5.0 Update x und J2SE 1.4.x Java Basics - Anfänger-Themen 4
C Unterschied zwischen equals und == ? Java Basics - Anfänger-Themen 6
G verstehe den unterschied zwischen equals und == nicht Java Basics - Anfänger-Themen 3
P Unterschied zwischen Interface und Vererbung und Sinn? Java Basics - Anfänger-Themen 5
M Unterschied zwischen J2SE, JSEE und JDK Java Basics - Anfänger-Themen 8
R Unterschied zwischen a++ und ++a Java Basics - Anfänger-Themen 9
G Unterschied zwischen homogenen und heterogenen Liste Java Basics - Anfänger-Themen 9
D Unterschied zwischen Ziffer und Zahl Java Basics - Anfänger-Themen 9
R Unterschied zwischen Integer und int Java Basics - Anfänger-Themen 6
B Was ist der Unterschied zwischen .java- und .class Dateien Java Basics - Anfänger-Themen 3
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
P Unterschied Installation von zipped JDK vs Installer-JDK (auf Windows)? Java Basics - Anfänger-Themen 2
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
K Unterschied Information Hiding und Kapselung? Java Basics - Anfänger-Themen 2
G Methoden wo ist der Unterschied?? Java Basics - Anfänger-Themen 11
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
H .jar unterschied .class Java Basics - Anfänger-Themen 3
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
K Unterschied for-Schleife Java Basics - Anfänger-Themen 14
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
N Unterschied von Post- und Preinkrement Java Basics - Anfänger-Themen 3
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
V Unterschied x++ und x=x++ Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
A Klassen Unterschied Warteschlange, Stapel und Liste Java Basics - Anfänger-Themen 3
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
S Unterschied print() und println() Java Basics - Anfänger-Themen 3
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
S Unterschied Ausführung in IDE <-> Befehlszeile Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben