Instanzen, wann muss ich Instanzen erzeugen & wo?)

C

Codix

Bekanntes Mitglied
Ist diese Aussage korrekt? (nur das fettgedruckte)

Wenn man eine nichtstatische Methode hat (die man in der z.B. public class erstellt), dann muss man eine Instanz der Methode erzeugen (in der main class).


Um eine Instanz zu erzeugen, legen wir eine Variable mit dem Typ der Klasse an.

Das Erzeugen der Instanz erfolgt mit dem Operator "new", dem Namen der Klasse und den () Klammern.

Der Zugriff auf die Methoden erfolgt durch den Bezeichner der Variablen für die Instanz, einen trennenden Punkt und den Namen der Methoden.
Einen direkten Zugriff von aussen auf die Instanzvariablen sollten Sie nach Möglichkeit vermeiden.
=
Klassenmethoden gehören nicht zu einer Instanz, sondern zur Klasse an sich. Klassenmethoden lassen sich deshalb auch ohne Instanz aufrufen.
In Klassenmethoden können Sie nur auf Klassenvariablen bzw. lokale Variablen zugreifen.
 
C

Codix

Bekanntes Mitglied
Man kann Instanzen von Klassen erzeugen, nicht von Methoden. Also: Nein, ist nicht korrekt.
Nur von Klassen oder auch von Variablen?

D.h. man muss Instanzen von Klassen (nicht main Klassen, sondern public class) erzeugen, um mit in der Klasse angelegten Methoden, in der main Klasse arbeiten zu können, um sie dort aufrufen zu können über die Instanz der Klasse?
 
W

White_Fox

Top Contributor
Nicht ganz korrekt. Eine Methode wird nicht instanziert. Aber Objekte werden instantiert, das ist richtig.

Beispiel: Du kannst keine Methode gehUndBringMirKaffee() erzeugen, das ist Unsinn.
Du kannst aber ein Objekt der Klasse Butler instantieren, und auf diesem die Methode anwenden, und das Butlerobjekt geht und bringt dir Kaffee.
 
C

Codix

Bekanntes Mitglied
Nicht ganz korrekt. Eine Methode wird nicht instanziert. Aber Objekte werden instantiert, das ist richtig.

Beispiel: Du kannst keine Methode gehUndBringMirKaffee() erzeugen, das ist Unsinn.
Du kannst aber ein Objekt der Klasse Butler instantieren, und auf diesem die Methode anwenden, und das Butlerobjekt geht und bringt dir Kaffee.

und was hat der code:

Code:
int getRandomNumber(){
    return 4;    //choosen by dice roll
}                //guaranteed to be random

damit zu tun?
 
W

White_Fox

Top Contributor
ja.
Um eine Instanz zu erzeugen, legen wir eine Variable mit dem Typ der Klasse an.
Sind das nur Variablen? Was ist mit primitiven Datentypen? Das sind auch Variablen.

Ok:
Eine Variable ist einfach nur ein Stück Speicher, auf dem du schreiben und lesen kannst. Mehr nicht. Speicher wird nicht instantiert (allenfalls wird Speicher alloziiert, d.h. beim Betriebssystem angefragt und von diesem evt. freigegeben, aber damit hast du in Java normalerweise nichts zu tun).

In Java ist es so: Du selber kommst an ein Objekt eigentlich gar nicht heran. Das, was in der Objektvariable steht, ist lediglich eine Referenz auf das Objekt, aber nicht das Objekt selber.


Edit:
Klassen werden instantiiert und da kommen dann Objekte raus.
Ähm...stimmt. Mea culpa.
 
W

White_Fox

Top Contributor
Vielleicht wird es damit etwas deutlicher:

Java:
public class ClassWithInt{
    private int i;
   
    public ClassWithInt(int i){
        this.i = i;
    }
   
    public int getI(){return i;}
}

public static void main(String args[]){
    ClassWithInt someObject;
    ClassWithInt seccondReference;
   
    //Instanciate some objects
    someObject = new ClassWithInt(7);
   
    //Copy the object reference to another object variable
    seccondReference = someObject;
   
    //What does the new object variable do?
    System.out.println(seccondReference.getI());    //Another object variable, but same object
}

Edit:
Ansonsten ist dieses Thema auch sehr gut in "Java von Kopf bis Fuß" aufgearbeitet. Ich kann dir nur raten, es mal zu lesen.
 
C

Codix

Bekanntes Mitglied
danke für alle Antworten, ihr seid mir um Einiges voraus.
Vielleicht wird es damit etwas deutlicher:

Java:
public class ClassWithInt{
    private int i;
  
    public ClassWithInt(int i){
        this.i = i;
    }
  
    public int getI(){return i;}
}

public static void main(String args[]){
    ClassWithInt someObject;
    ClassWithInt seccondReference;
  
    //Instanciate some objects
    someObject = new ClassWithInt(7);
  
    //Copy the object reference to another object variable
    seccondReference = someObject;
  
    //What does the new object variable do?
    System.out.println(seccondReference.getI());    //Another object variable, but same object
}

Edit:
Ansonsten ist dieses Thema auch sehr gut in "Java von Kopf bis Fuß" aufgearbeitet. Ich kann dir nur raten, es mal zu lesen.

Hast du das Buch "Java von Kopf bis Fuß" als PDF? Ich würde es gern kaufen.
 
C

Codix

Bekanntes Mitglied
Es hängt vor allem davon ab, wo man die Instanz der Klasse benötigt. Generell kann man überall Instanzen von Klassen erzeugen.
Die Instanzen der Klassen ermöglichen uns nur den Zugriff auf die Methoden, oder?
Wann genau sollten wir Instanzen von Klassen erzeugen? Nur wenn wir auf die Methoden zugreifen wollen?
 
W

White_Fox

Top Contributor
Nein. Wenn du eine Klasse instantierst, belegst du z.B. auch Speicher für Membervariablen.

Wenn du nur die Methode einer Klasse brauchst solltest du die Methode als static deklarieren, dann mußt du keine Klasse instanzieren.
 
C

Codix

Bekanntes Mitglied
Nein. Wenn du eine Klasse instantierst, belegst du z.B. auch Speicher für Membervariablen.

Wenn du nur die Methode einer Klasse brauchst solltest du die Methode als static deklarieren, dann mußt du keine Klasse instanzieren.

und wo soll ich dann die Methode als Klassenmethode = static methode deklarieren? In der main class (Hauptklasse) oder public class?

bitte guck dir den thread: 2dimensionales array, Lagerverwaltung an.
Dort ist eine aufgabe, ich und temi arebeiten an der Lösung der Aufgabe. es geht um Methoden und Instanziierung.

denkst du wir sollten dort die Methoden als statisch deklarieren?

Danke im Voraus
 
W

White_Fox

Top Contributor
Naja, du hast eine Frage gestellt - und eine Antwort erhalten. Das konkrete Problem ist was anderes, und wenn es so einfach wäre dann wäre temi schon von allein draufgekommen. Der kennt sich besser aus als ich. (Hier kennt sich jeder besser mit Java aus als ich, ich hab vom Programmieren eher wenig Ahnung, ich bin aus einer anderen Profession.)

Aber versuche mal das hier laufen zu lassen und zu verstehen, was static eigentlich macht:

Java:
public class ClassWithStaticInteger{
    private static int i;
   
    public ClassWithStaticInteger(int i){
        this.i = i;
    }
   
    public void setStaticInteger(int i){
        this.i = i;
    }
   
    public int getStaticInteger(){
        return i;
    }
}

public static void main(String args[]){
    ClassWithStaticInteger firstObject;
    ClassWithStaticInteger anotherObject;
   
    //Instanciate the first object.
    firstObject = new ClassWithStaticInteger(3);
   
    //Now instanciate another object. The static variable will be overwritten.
    anotherObject = new ClassWithStaticInteger(7);
   
    //And now, look this. Remember, firstObject was instanciated with 3
    System.out.println("Statisches Integer: " + firstObject.getStaticInteger());
}

Nachtrag: Du kannst das static ja mal rausnehmen und nochmal durchlaufen lassen.
 
C

Codix

Bekanntes Mitglied
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Was machen mit nicht mehr verwendeten Instanzen ? Java Basics - Anfänger-Themen 18
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
F Mehrere Instanzen der Klasse A EINER Instanz der Klasse B übergeben Java Basics - Anfänger-Themen 3
M Alle Instanzen einer Klasse ansprechen Java Basics - Anfänger-Themen 4
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
B OOP Summe aus verschiedenen Instanzen einer Klasse berechnen Java Basics - Anfänger-Themen 2
Z Was habe ich davon mit einem Datentyp verschiedene Instanzen zu haben? Java Basics - Anfänger-Themen 6
Q OOP Mehrere Instanzen auf ein Feld Java Basics - Anfänger-Themen 13
G Instanzen eines Interfaces erzeugen Java Basics - Anfänger-Themen 7
S Direkt Instanzen anlegen Java Basics - Anfänger-Themen 1
K Variablen Instanzen gleich aber warum ? Java Basics - Anfänger-Themen 3
D Instanzen durch Methode Java Basics - Anfänger-Themen 14
W Zugriff auf Instanzen von Klassen Java Basics - Anfänger-Themen 8
S aus Text Datei Instanzen erzeugen, so richtig? Java Basics - Anfänger-Themen 4
O Liste aller Instanzen einer Klasse Java Basics - Anfänger-Themen 18
H Klassen Instanzen mit anderen Klassen erzeugen Java Basics - Anfänger-Themen 5
C Referenzen zu Instanzen einer Klasse im Array Java Basics - Anfänger-Themen 8
B Enum: Instanzen Java Basics - Anfänger-Themen 10
M Instanzen vergleichen? Java Basics - Anfänger-Themen 12
H Klassen, Konstruktoren, Instanzen etc Java Basics - Anfänger-Themen 6
W Instanzen, Klassen Java Basics - Anfänger-Themen 2
C Vectorarrays und Instanzen Java Basics - Anfänger-Themen 10
S alle instanzen einer klasse löschen Java Basics - Anfänger-Themen 18
C OOP Instanzen ansprechen Java Basics - Anfänger-Themen 3
P Verständnisfrage zu Instanzen/Objekten Java Basics - Anfänger-Themen 9
B Zugriff auf Variablen in nicht bekannten Instanzen Java Basics - Anfänger-Themen 6
R mit klassen-instanzen arbeiten in packages Java Basics - Anfänger-Themen 10
M Instanzen, Referenzen und Collections Java Basics - Anfänger-Themen 3
A Mehrere Instanzen einer eigenen Klasse in einem Array Java Basics - Anfänger-Themen 5
W mehrere (numerierte) Instanzen erzeugen Java Basics - Anfänger-Themen 3
M Dynamisch Instanzen erstellen. Java Basics - Anfänger-Themen 4
N Instanzen von beliebigen Klassen aus dem Filesystem erzeugen Java Basics - Anfänger-Themen 7
M Problem mit Instanzen von JLabel Java Basics - Anfänger-Themen 4
E Vermeiden,dass mehrere Instanzen eines Java-Programms laufen Java Basics - Anfänger-Themen 2
V mehrere Instanzen gleicher Name möglich? Java Basics - Anfänger-Themen 3
E instanzen von Klassen erzeugen Java Basics - Anfänger-Themen 2
H Instanzen erzeugen und Methoden aufrufen Java Basics - Anfänger-Themen 5
L verschiedene JPanel-Instanzen erstellen Java Basics - Anfänger-Themen 8
K Eindeutige Instanzen von einem Objekt Java Basics - Anfänger-Themen 13
T Wo Daten ablegen für mehrere Servlet-Instanzen? Java Basics - Anfänger-Themen 2
G Instanzen in einem Feld erzeugen Java Basics - Anfänger-Themen 9
J Instanzen dynamisch erzeugen Java Basics - Anfänger-Themen 8
T Instanzen von abstrakten Klassen? Java Basics - Anfänger-Themen 14
D Instanzen einer Klasse Java Basics - Anfänger-Themen 6
G Speicherung von Referenzen auf Instanzen Java Basics - Anfänger-Themen 5
G alle Instanzen einer Klasse serialisieren Java Basics - Anfänger-Themen 4
Silver-Blue mehrere Instanzen einer Klasse, trotz Random immer das Selbe Java Basics - Anfänger-Themen 7
W Instanzen herunterzählen Java Basics - Anfänger-Themen 7
G Instanzen und Referenzen Java Basics - Anfänger-Themen 5
S Instanzen Java Basics - Anfänger-Themen 4
G wenn auch schon oft gefragt (Konstruktor , Instanzen , usw) Java Basics - Anfänger-Themen 6
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
R Wie überprüfen wann der User online oder offline ist? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
M Best Practice Wann eine Methode schreiben ? Java Basics - Anfänger-Themen 14
K Warum funktioniert das und wann erden die Objektmethoden nun ausgeführt? Java Basics - Anfänger-Themen 7
I Welches Event kommt wann? Java Basics - Anfänger-Themen 8
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
M Wann final verwenden? Java Basics - Anfänger-Themen 5
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
T Vererbung Wann wird die Methode paint aufgerufen? Java Basics - Anfänger-Themen 4
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
K Wann Vererbung und wann Interface verwenden? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
P Threads Wann läuft es parallel ab ? Java Basics - Anfänger-Themen 4
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
T Ab wann ist es ein großes Projekt? Java Basics - Anfänger-Themen 35
N Bessere Performance durch final: wann denn überhaupt? Java Basics - Anfänger-Themen 28
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
W Wann nutze ich "import"? Java Basics - Anfänger-Themen 12
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
H Wann ein Objekt der Programmklasse in main anlegen Java Basics - Anfänger-Themen 2
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
T Wann for und wann while?? Java Basics - Anfänger-Themen 35
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Wann wird eine Klasse geladen? Java Basics - Anfänger-Themen 17
C this - wann verwende ich das? Java Basics - Anfänger-Themen 10
T Threads - Ab wann wirds Kritisch?! Java Basics - Anfänger-Themen 7
M Wann muss man eine Variable mit set-/get-Methoden in eine Bean schreiben? Java Basics - Anfänger-Themen 19
G field public/private wann Java Basics - Anfänger-Themen 11
GambaJo Ab wann neue Klasse erzeugen? Java Basics - Anfänger-Themen 2
G Wann Arrays, wann Collections? Java Basics - Anfänger-Themen 36
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11

Ähnliche Java Themen


Oben