Grundlegendes Zu Objekten/Klassen

Vokabulator

Mitglied
Hallo!

Lese gerade ein Buch (Grundlagen Java) in dem ein paar Sachen stehen, die ich nicht verstehe:

1. Klassenmethoden können nicht auf Instanzvariablen zugreifen und keine Instanzmethoden aufrufen.

Das mit den Instanzvariablen weiß ich noch nicht, aber ich kann doch in einer Klassenmethode sowohl innerhalb als auch außerhalb der Klasse auf eine Instanzmethode zugreifen?
Code:
Klassenname Objektname = new Objektname(); und dann Objektname.Instanzmethode();

Oder sehe ich da was falsch?

2. Wozu genau dient ein Kopierkonstruktor?

3. Generell sind ja Variablen innerhalb einer Methode lokale Variablen. Sehe ich es richtig, dass, wenn der Parameter mit Datentyp deklariert wurde (z. B. int x), dann muss ich die lokale Variable nicht noch mal mit Datentyp deklarieren? Also z. B.

Code:
public void test(int x) { lokalevariable = x; }

4. Call-by-value: Normalerweise bleibt der Wert der Variablen in der aufrufenden Methode ja unverändert. Aber bei Arrays ist das nicht so. Da wird der Wert verändert?

5.
Innerhalb eines Blocks kann auf die Variablen der umgebenden Blöcke bzw. der umgebenden Methode sowie auf die Attribute der umschließenden Klasse zugegriffen werden. Es ist nicht erlaubt, eine bereits deklarierte lokale Variable in einem tiefer geschachtelten Block erneut mit dem gleichen Namen zu deklarieren. Allerdings darf ihr Name mit einem Auributnamen übereinstimmen. Deklarationen lokaler Variablen können mit anderen Anweisungen gemischt werden.

Das verstehe ich überhaupt nicht. Was genau soll mir das sagen?

6. Was sind Initialisierer? Das ist ja was anderes als ein Konstruktor, oder? Und sehe ich das richtig, dass static initializer einfach nur dazu dienen, Konstanten einen Wert zuzuweisen, bei der Instanziierung eines Objekts?

So, das wars erstmal. Ich habe gegoogle, ich schwöre es! :exclaim: Aber bisher hab ich noch keine Erklörung gefunden, die mich weiterbringt.

Vielen Dank schon mal!
 

Phash

Top Contributor
Ich rate zu einem anderen Buch :)

Java von Kopf bis Fuß

Dein Buch scheint etwas aelter Bauart zu sein, und erscheint mir nicht wirklich konsistent...

Kopierkonstruktoren gibt es erstmal nicht in Java. Man koennte sowas bauen - aber naja...

Variablen kann man immer mit dem gleichen Namen in jedem Gueltigkeitsbereich erstellen - man sollte es nur vermeiden, da man sonst leicht durcheinander kommt und Bugs vorprogrammiert sind.

Klassenmethoden und Instanzvariablen... puh...
Also wenn eine Methode eine Klassenmethode ist, dann meinen die vielleicht static Methoden. Diese koennen in der Tat nicht auf Instanzvariablen zugreifen - nur auf statische Variablen oder Variablen innerhalb der Methode...

Das ist aber umstaendlich erklaert...
 

pl4gu33

Top Contributor
Hallo!

Lese gerade ein Buch (Grundlagen Java) in dem ein paar Sachen stehen, die ich nicht verstehe:

1. Klassenmethoden können nicht auf Instanzvariablen zugreifen und keine Instanzmethoden aufrufen.

Das mit den Instanzvariablen weiß ich noch nicht, aber ich kann doch in einer Klassenmethode sowohl innerhalb als auch außerhalb der Klasse auf eine Instanzmethode zugreifen?
Code:
Klassenname Objektname = new Objektname(); und dann Objektname.Instanzmethode();

Oder sehe ich da was falsch?

Also auf static Methoden und Variablen kannst du innerhalb von normalen Methoden zugreifen,... andersrum geht das nicht. Static Variablen und Methoden haben keinen eigenen Wert pro Objekt sie sind für alle Objekte der Klasse gleich. Auf Methoden einer Klasse kannst du von außen nur zugreifen, wenn sie sichtbar sind. Die Sichtbarkeit wird über public,private, protected etc. realisiert

2. Wozu genau dient ein Kopierkonstruktor?


Zum Kopieren eines Objektes? :D Dabei gibt es flache und tiefe Kopien.

3. Generell sind ja Variablen innerhalb einer Methode lokale Variablen. Sehe ich es richtig, dass, wenn der Parameter mit Datentyp deklariert wurde (z. B. int x), dann muss ich die lokale Variable nicht noch mal mit Datentyp deklarieren? Also z. B.

Code:
public void test(int x) { lokalevariable = x; }

Auch die Lokale Variable braucht einen Datentyp

4. Call-by-value: Normalerweise bleibt der Wert der Variablen in der aufrufenden Methode ja unverändert. Aber bei Arrays ist das nicht so. Da wird der Wert verändert?

Du kannst die Werte im Array selber ändern. Änderungen der Array-Referenz nicht.
http://www.java-forum.org/allgemeines/4904-call-value-call-reference.html

5.
Java:
	public static void blockMethode(){
		int a = 5;
		{
//			int a =3; // geht nicht
			a = 6; //geht 
		}
	}
Java:
private int a = 6;
	
	public void blockMethode(){
		int a = 5;
		System.out.println(a); // lokale Variable
		System.out.println(this.a); // Attribut
	}

Vieles davon kannst du auch einfach ausprobieren ;)

I
Variablen kann man immer mit dem gleichen Namen in jedem Gueltigkeitsbereich erstellen - man sollte es nur vermeiden, da man sonst leicht durcheinander kommt und Bugs vorprogrammiert sind.

Java:
	public void blockMethode(){
		int a = 5;
		for(int i= 0;i<3;i++){
			int a = 6; //geht nicht
		}
		//oder
		{
			int a = 6; //geht nicht
		}		
	}
		}

Das stimmt so nicht,... ich bin mir bloß gerade nicht sicher ob du was anderes meinst :D. Aber das hört sich irgendwie komisch an. :D Man kann das, was ich oben gezeigt habe machen innerhalb der Klasse.
 
Zuletzt bearbeitet:

Vokabulator

Mitglied
Okay, vielen Dank erstmal!

Also zunächst: Das Buch ist von 2010 (die 6., aktualisierte Auflage)

Und ja, Klassenmethoden (und Klassenvariablen) haben
Code:
static
.

1) Okay, ich denke, was die meinen ist, dass man erst ein neues Objekt erzeugen muss, un dann darüber auf die Instanzmethode zugreift.

2) Ist sowas hier nicht ein Kopierkonstruktor?
Code:
class Rational
{
    Rational(Rational r)
    {
    	num = r.num;
	denom = r.denom;
    }
    ...
}

Also, dass er das Objekt kopiert, hatte ich mich schon erschlossen ;) Aber wozu? Wann braucht man sowas?

3) Also so:
Code:
public void test(int x) {
int lokalevariable;
lokalevariable = x;

Ich kann es aber auch so machen, oder?:

Code:
public void test(int lokalesvariable) {
this.x = lokalevariable;
}

Oder ist das hier was Anderes?

4) Das schau ich mir noch mal an :)

5) okay, ich probiers aus ;)
 

VfL_Freak

Top Contributor
Moin,

3) Also so:
Code:
public void test(int x) {
int lokalevariable;
lokalevariable = x;

Ich kann es aber auch so machen, oder?:

Code:
public void test(int lokalesvariable) {
this.x = lokalevariable;
}
Oder ist das hier was Anderes?

Wo wäre denn im zweiten Fall das "x" deklariert ???

Gruß
Klaus
 

X5-599

Top Contributor
Also die beiden Varianten machen schon was anderes:

Hier deklarierst du eine lokale Variable (lokalevariable) und weis ihr den Wert des Parameters x zu. Keinerlei Interaktion mit irgendwelchen Instanz Variablen.
Java:
public void test(int x) {
    int lokalevariable;
    lokalevariable = x;
}


Hier weist du der Instanz Variablen (x) den Wert des Parameters (lokalesvariable) zu.
Java:
public void test(int lokalesvariable) {
    this.x = lokalevariable;
}
 

Vokabulator

Mitglied
Aah okay.. dann habe ich hier lokale Variable und Parameter verwechselt. Der Parameter wird im Kopf deklariert und braucht dann nachher keinen Datentyp mehr Die lokale Variable wird im Rumpf deklariert, mit Datentyp.
 
H

hüteüberhüte

Gast
Es gibt verschiedene Namensräume. Innerhalb desselben Namensraum darf eine Variable / Methode / Klasse nur einmal deklariert werden. Innerhalb verschiedener Namensräume dürfen auch dieselben Namen / Bezeichner stehen, das nennt sich z.B. Verdeckung.

Ein Kopierkonstruktor ist durchaus üblich und kopiert meist (alle) Attribute / Objekt-/Instanzvariablen des übergebenen Objekts.

Weiteres einfach in einem Guten Buch nachzulesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Ich habe das Gefühl etwas grundlegendes falsch zu machen Java Basics - Anfänger-Themen 6
G OOP-Frage - Grundlegendes zum erzeugen von Klassen Java Basics - Anfänger-Themen 7
K Grundlegendes Problem - Editor funktioniert nicht Java Basics - Anfänger-Themen 9
D Grundlegendes mit swing und klassen Java Basics - Anfänger-Themen 19
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
T Kollision von 2 Objekten Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
N Vererbung Queue bestehend aus Superclass- und Subclass-Objekten Java Basics - Anfänger-Themen 7
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
YAZZ Schlüsselworte Töten von Objekten Gameover Java Basics - Anfänger-Themen 2
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Zeppi OOP Array in Objekten Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
A Klasse Menge mit Objekten der Klasse Person Java Basics - Anfänger-Themen 8
S Auf Array aus Objekten zugreifen? Java Basics - Anfänger-Themen 1
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
D Operatoren Mit Objekten rechnen Java Basics - Anfänger-Themen 7
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
B ID von unterschiedlichen Objekten bekommen? Java Basics - Anfänger-Themen 2
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
PaperHat Programmieraufgabe - Objekte in Objekten Java Basics - Anfänger-Themen 2
L Rechnen mit Objekten Java Basics - Anfänger-Themen 3
S werte von objekten in schleife verändern Java Basics - Anfänger-Themen 14
D Zusammenarbeit von Objekten Java Basics - Anfänger-Themen 1
Y Begrenzte Anzahl an Objekten? Java Basics - Anfänger-Themen 12
Kornblume Nulltyp eines Arrays von Objekten? Java Basics - Anfänger-Themen 10
A Frage zur Aufgabe Uhrzeit einstellen mit Objekten Java Basics - Anfänger-Themen 18
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
arjoopy Kapselung Übergabe von Objekten aus ArrayList Java Basics - Anfänger-Themen 4
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
M Speichern von Objekten - Verfügbarkeit bei erneutem Aufruf Java Basics - Anfänger-Themen 3
R Methoden Methode ruft Methode auf, ruft Methode auf (mit Objekten) Java Basics - Anfänger-Themen 4
S Serialisierung: Laden von Objekten - Risiken? Java Basics - Anfänger-Themen 4
Shizmo PriorityQueue mit Objekten Java Basics - Anfänger-Themen 10
E Instanzieren von Objekten verkürzen Java Basics - Anfänger-Themen 1
F Interaktion von Objekten verschiedener Klassen... Java Basics - Anfänger-Themen 13
D Effiziente Verwaltung der Objekten und Unterobjekten Java Basics - Anfänger-Themen 18
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
L Subklasse von ArrayList nur mit bestimmten Objekten füllen Java Basics - Anfänger-Themen 1
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
S Problem mit augabe von Objekten Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
W Was passiert mit Objekten die nicht in Objektvariablen initialisiert werden ? Java Basics - Anfänger-Themen 3
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
K Min eines Arrays mit Objekten Java Basics - Anfänger-Themen 6
M Array mit Objekten lässt sich nicht auslesen Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
J Methoden Einfügen von Objekten nach Alphabet in ArrayList funktioniert nicht Java Basics - Anfänger-Themen 2
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
TheSorm Koordinaten von gedrehten Objekten Java Basics - Anfänger-Themen 4
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
B Aliasing bei null-Objekten Java Basics - Anfänger-Themen 3
O Java Erzeugung von neuen Objekten Java Basics - Anfänger-Themen 1
J Verständnisfragen zu dem Thema Objekten Java Basics - Anfänger-Themen 7
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
O Größe von Objekten Java Basics - Anfänger-Themen 5
Y Variable Menge von Objekten erzeugen und mit ihren Attributen rechnen Java Basics - Anfänger-Themen 7
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F Umgang mit referenzierten Objekten bei ArrayList Java Basics - Anfänger-Themen 1
M Löschen von Objekten während Iteration über Liste Java Basics - Anfänger-Themen 9
E Array von Objekten einer selbst definierten Klasse mit eindeutigem Namen Java Basics - Anfänger-Themen 2
C For schleife mit Array und Objekten Java Basics - Anfänger-Themen 17
kaoZ Input/Output Android : Deserialisieren von mehreren Objekten in einer Datei Java Basics - Anfänger-Themen 0
U Übergabe von Objekten Java Basics - Anfänger-Themen 0
C Werte aus zwei Objekten miteinander vergleichen Java Basics - Anfänger-Themen 3
Joew0815 Interface JSON Objekte aus Java Objekten erzeugen Java Basics - Anfänger-Themen 9
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
E Erste Schritte Sortieren von Objekten in doppelt-verlinkter Liste Java Basics - Anfänger-Themen 9
R addition von 2 Array Objekten Java Basics - Anfänger-Themen 5
S Problem bei Kollision zwischen Array-objekten! Java Basics - Anfänger-Themen 2
C Probleme mit neuen Objekten Java Basics - Anfänger-Themen 3
S Erste Schritte Bluej Automatisches Einfügen von Objekten Java Basics - Anfänger-Themen 4
D ID von Objekten in Arraylist Java Basics - Anfänger-Themen 3
B Datentypen Inhalt von Objekten miteinander vergleichen Java Basics - Anfänger-Themen 2
R Erste Schritte Objekte mit anderen Objekten als Inhalt Java Basics - Anfänger-Themen 4
V Frage zum Löschen von Objekten Java Basics - Anfänger-Themen 2
C ArrayList mit Objekten Java Basics - Anfänger-Themen 4
P Mindestangaben beim anlegen von Objekten Java Basics - Anfänger-Themen 4
H Array von Klassen Objekten Java Basics - Anfänger-Themen 6
J Array mit Objekten sortieren Java Basics - Anfänger-Themen 11
J Bilder von Objekten Java Basics - Anfänger-Themen 3
G Scrollbares Fenster bei mehr als 5 Objekten Java Basics - Anfänger-Themen 4
B Methoden auf Objekten Java Basics - Anfänger-Themen 12
D OOP Objekt in mehreren Objekten Java Basics - Anfänger-Themen 3
J Datentypen List - gleiche Einträge bei neuen Objekten Java Basics - Anfänger-Themen 31

Ähnliche Java Themen


Oben