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.
Hi, wie der Titel schon sagt, möchte ich auf eine private Variable durch eine Methode zugreifen.
Eine Klasse, wo sich die private Variable mit Methode befindet:
Java:
public class A{
private int var;
int theMethod() {
return var;
}
Und die Zweite:
Java:
public class TryToAccess {
int a;
a= A.theMethod();
}
warum geht es nicht?
Ich habe gerade einen Kapitel gelesen, wo es um Konstruktor ging. Aber ich möchte einfach über eine Methode darauf zu greifen und es klappt einfach nicht. Leider im Buch ist es bis jetzt gar nicht beschrieben, nur, dass es halt möglich ist. Wie macht man dann so was? Danke!
ich habe noch schnell im Internet gefunden, dass es noch Getters und Setters gibt. Aber die sind im Prinzip die gleichen Methoden, wie bei mir in der ersten Klasse.
Geht es echt gar, absolut gar nicht ohne Instanzen? :noe: ich kann einfach nicht glauben... sitze gerade voll traurig.
Nicht, dass ich wüsste.
Entweder brauchst und wirst auch immer nur A als Datenkapselung für diese Variable brauchen, oder du legst dir n Instanzen an, um n Container für n verschiedene Variablen zu erzeugen.
so wie Du das möchtest, geht es leider nicht.
Die von Dir deklarierte Variable var ist eine Instanzvariable (gleiches gilt auch für die Methode) und ist somit auch nur über eine existierende Instanz der Klasse zugreifbar.
Was Du machen kannst, ist die Variable und die Methode jeweils als Klassenvariable bzw. -methode zu deklarieren und somit in der gewünschten Art und Weise zugreifbar zu machen. Dabei müssen sowohl die Variable, als auch die Methode als static gekennzeichnet werden.
Beachte dabei aber, dass sich nun alle Instanzen der Klasse A ein und dieselbe Variable teilen.
Java:
public class A {
private static int var = 0;
public static int getVar() {
return var;
}
}
[/Java]
VG
maske
jo, mit static hat bei mir auch geklappt, aber ich würde gern die Finger von static erst weghalten... habe viel Negatives darüber gehört, dass man mit static sehr vorsichtig umgehen muss.
Schade...
Danke für die schnelle Hilfe, Guys. thumb up
Das ist gelinde gesagt Quatsch. [c]static[/c] bedeutet einfach für Variablen etwas ganz anderes als eine normale, es gibt die Variable pro Klasse nur einmal (auch wenn man von jeder Instanz darauf zugreifen kann). Einfachstes Beispiel ist ein Zähler:
Java:
public class Car {
public static int counter = 0;
public Car() {
counter++; //Zähler wird erhöht
}
}
...
new Car();
new Car();
new Car();
System.out.println(Car.counter); //3
Würde man das [c]static[/c] hier weglassen, hätte jedes Auto seine eigene Variable (die nach dem Erhöhen gleich 1 wäre), und man könnte nicht über [c]Car.counter[/c] auf diese zugreifen, sondern nur über die jeweilige Auto-Instanz.
Die
Code:
static
-Variable klebt also nicht an einem Auto, sondern an der Autofabrik (schließlich fallen ja dort die Luftballons von der Decke, werden die Millionste Klapperkiste vom Band rollt)
Das negative an [c]static[/c] ist, dass es einen nicht objektorientierten Stil fördert, und der Code deshalb unflexibel werden kann, aber das ist momentan für dich eher unwichtig.
jo, mit static hat bei mir auch geklappt, aber ich würde gern die Finger von static erst weghalten... habe viel Negatives darüber gehört, dass man mit static sehr vorsichtig umgehen muss.
Schade...
Danke für die schnelle Hilfe, Guys. thumb up
naja ... static ist jetzt nichts negatives oder etwas womit man vorsichtig umgehen muss ... es ist halt nur nicht wirklich im sinne der objektorientierten programmierung sondern geht eher in die richtung prozedual/funktional ...
es gibt einige dinge die wären ohne static überhaupt nicht machbar ... z.b. Singleton / Factory oder auch ein einfacher "Helper" ... es ist also an einigen stellen schon sinnvoll und sogar notwendig ... sollte aber nicht über das gesamte programm verteilt sein ...
persönlich bin ich der meinung das es in einem programm , mit ausnahme der oben angespielten sonderfälle , nur ein einziges STATIC im gesamten programm geben sollte : public static void main(String[]) ... und das funktioniert auch zu 99% immer ... es sei denn man muss im sinne von clean-code das 1% was man sonst mehrfach schreiben würde als "Helper" auslagern