Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Klassen- und Instanzvariablen / Klassen- und Instanzmethode
Hallo Leute!
Also ich bin grad am Javalernen. Doch scheitere an den Klasenvariablen und Instanzvariablen.
1. Wie werden die Klassenvariablen deklariert und wie die Instanzvariablen (falls gleich, wo wird was definiert)? Für was benötigt man Klassenvariablen und für was die Instanzvariablen. Denn ich checke den Unterschied nicht so genau.
2. Was ist der Unterschied zwischen Klassenmethoden und Instanzmethoden? Welche Methode kann man wie und wo verwenden und wie werden sie "deklariert"?
Klassen/Instanz-Variablen oder -Methoden kann man am Schlüsselwort "static" unterscheiden:
Code:
public class Blupp{
private int instancVariable = 1;
private static int klassenVariable = 2;
public void instancMethode(){}
public static void klassenMethode(){}
}
Wann immer du eine Klassenmethode/-Variable benutzen musst, merkst du, dass dein Programm falsch aufgebaut ist :bae:
Klassenvariablen/Methoden gehören sozusagen zum Bauplan einer Klasse, Instancvariablen/methoden zu dem Objekt, das durch den Bauplan beschrieben wird.
Such mal in der FAQ nach "static", das kommt etwa 3 mal vor.
Also wenn ich das jetzt richtig verstanden habe, dann kann man mit Instanzvariablen sowas machen bzw. aufrufen für ein Objekt einer Klasse:
Code:
//zuerstmal Objekte erstellen.
Klasse objekt = new Klasse();
Klasse objekt2 = new Klasse();
//dann die Variable z.B. name für das Objekt
objekt.name = "Hubert";
objekt2.name = "Anton";
und eine Klassenvariable ist dann etwa sowas:
Code:
//zuerst mal die Klassenvariable erstellen.
int name = "Hubert";
//dann die Variable einem Objekt "zufügen".
System.out.println(objekt.name) //hier wird Hubert ausgegeben.
System.out.println(objekt2.name)//hier wird ebenfalls Hubert ausgegeben.
Also ich habe es so verstanden, dass man bei Klassenvariablen den Wert nicht ändern kann (wie in dem Beispiel wo Hubert bei beiden Objekten ausgegeben wird), aber bei Instanzvariablen schon (wie im ersten Beispiel mit Anton und Hubert).
Ne, da muss ich dich entäuschen.
Ich zeig dir ein Beispiel:
Code:
class Pi
{
public double pi1 = 3.14159; //Instanvariable
public static double pi2 = 3.14159; //Klassenvariable
}
public class Main
{
public static void main(String[] args)
{
//Pi über Instanzvariable ausgeben
Pi test = new Pi();
System.out.println(test.pi1);
//Pi über Klassenvariable ausgeben
System.out.println(Pi.pi2);
}
}
Beim abgreifen der Klassenvariable musst du kein Objekt erzeugen. Du liest und schreibst den Inhalt der Variable über Klassenname.Variablennamen. Klassenvariablen sind z.B. gut, wenn es unnötig wäre um eine Hilfsvariable in deinem Programm zu verwenden jedesmal im Code ein Objekt dafür zu erzeugen.