wie oft werden Instanzvariablen genutzt

Die Frage zeigt wohl, dass der TO nicht verstanden hat, was Instanzvariablen sind.
Ich denke, dass gerade die Unterscheidung von Klasse und Instanz, bzw. Objekt die größte Hürde für Anfänger darstellt. Ein richtig gutes Bild für die klare Trennung der Begriffe hab ich leider bisher auch noch nicht gefunden.

Ich stell mir halt unter einer sog. Klasse eine Art Bauplan vor, nach der Objekte erstellt werden können.
Nach einem Bauplan "Klasse" erzeugte Objekte, sog. Instanzen, bleiben mit ihrem Bauplan verbunden, kennen also ihren Bauplan.

Klasse => Bauplan
Instanz => Objekt nach bestimmtem Bauplan

Statische Variable oder Methoden einer Klasse werden beim Erstellen eines entsprechenden Objekts dort nicht eingebaut, sondern bleiben Teil des Bauplans, also der Klasse. (daher Klassenvariable, -methode).
Greifen Objekte dann auf diese statischen Methoden oder Variablen zu, dann bedeutet das gewissermassen einen Rückgriff auf den Bauplan, der für alle Instanzen (Objekte) einer Klasse logischerweise der Gleiche ist.

Objekte nach einem bestimmten Bauplan, also Instanzen, sollen sich aber in aller Regel von einander unterscheiden können, wie ein VW Golf sich von einem anderen unterscheiden kann. Der eine ist grün, der andere rot, der eine hat nen 150 PS Motor, der andere 75 PS. Um dergleichen zu erreichen braucht es eben Instanzvariable. Ohne Instanzvariable dürfte man Java wohl kaum objektorientiert nennen.
Instanzvariable sind also ziemlich essentiell.
 
Zuletzt bearbeitet von einem Moderator:
Auch wenn die Frage (speziell wegen http://www.java-forum.org/java-basics-anfaenger-themen/143281-oft-methoden-genutzt.html ) als Trollversuch durchgehen könnte, könnte man da lange drüber philosophieren. In anderen Sprachen gibt es z.B. das Uniform access principle - Wikipedia, the free encyclopedia , wodurch die Grenze zwischen beiden verwischt. Außerdem könnte man in der Diskussion noch einen Abstecher machen zu Race Conditions, Speicherverbrauch, Multithreading und Funktionaler Programmierung.... :reflect: Aber nicht ich, oder zumindest nicht mehr heute 😉 Nur kurz: Eine Faustregel wie "so wenige Instanzvariablen wie möglich" wäre etwas zu pauschal, aber ... IMHO nur ein wenig...
 
na, interessant...???:L..welchen Sinn machen Instanzen ohne Instanzvariable...also z.B. n Punkt3D.. ohne Instanzvariable.. scheint mir unbedingt sinnvoll....:autsch:
 
na, interessant...???:L..welchen Sinn machen Instanzen ohne Instanzvariable...also z.B. n Punkt3D.. ohne Instanzvariable.. scheint mir unbedingt sinnvoll....:autsch:

natürlich, in dem Beispiel sollte man Instanzvariablen benutzen. Wenn du allerdings innerhalb einer Methode eine Variable brauchst die nur innerhalb der Methode benutzt wird, dann sollte sie keine Instanzvariable sein sondern nur innerhalb des Scopes der Methode deklariert werden.
 
Das mit dem Scope steht außer Frage (diskutieren wir hier auf dem Level des Thread-Erstellers oder was? 😡 :joke: ).

Interessanter wird es bei der Frage, was ausgerechnet und was gespeichert wird. Irgendein sinnloses Dummy-Beispiel:
Java:
class Manager {
    private List<Person> persons = Collections.unmodifiableList(....);

    public String getStringSummarizingAllPersons()
    {
        // String hier erstellen?
        // Oder einmal im Konstruktor erstellen und als Instanzvariable speichern?
        // Oder einfach cachen? 
    }
}
Die Fragen, wie oft welche Methode aufgerufen wird, wie aufwändig sie ist, und wie zeitkritisch der Kontext ist, IN dem sie aufgerufen wird sind da schon wichtig.

Das Beispiel wirkt vielleicht noch vergleichsweise einfach oder einschränkend. Ich dachte aber auch an den Punkt, dass Prozessoren in den letzten xx Jahren schneller schneller geworden sind, als Speicher. Während es "früher" vielleicht noch sinnvoll gewesen wäre, bestimmte Ergebnisse einmal zu speichern und als Instanzvariable zu halten, ist es heute eben so, dass ein Speicherzugriff u.U. mehreren hundert Taktzyklen bzw. verarbeiteten Instruktionen entspricht, und sich damit die Grenze, wann es sinnvoll ist, etwas als Instanzvariable zu halten, verschiebt. Aber etwas akademisch ist die Überlegung, ja...
 
das problem ist, ich habe ein Java 7 - Buch und bin fleißig am lernen, von mittags bis fast abends, aber iwie wiederspricht sich manches und dann schau ich im inet nach und dort wird wieder etwas anderes gesagt oO
dass ist das anstrengende
 
Und da hast du dich gefragt ob du das Instanzvariablen oder Methoden Kapitel auslasssen kannst?

Nö das sind Kernkonzepte... da kommst du nicht drum rum..

Was wiederspricht sich den?
 

Zurück
Oben