Ich versuche eine Variable numFriends aufzurufen, die ich in einer anderen Klasse erstellt habe, aber wenn ich das versuche, heißt es: "numFriends kann nicht in eine Variable aufgelöst werden". Die Variable wird jedes Mal erhöht, wenn ein neuer Freund hinzugefügt wird, und ich möchte dies in meiner Test-Klasse anzeigen. Hier ist mein Code:Zugriff auf eine Variable aus einer anderen Klasse in Java nicht möglich?
CLASS ONE
public class Person {
private String fullName;
private char gender;
private int age;
public static int numFriends = 0;
public Person(String nm, char gen, int a) {
fullName = nm;
gender = gen;
age = a;
numFriends++;
}
public void setName(String nm) {
fullName = nm;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
public void setGender(char g) {
gender = g;
}
public String toString() {
return (fullName + ", gender = " + gender + ", age = " + age);
}
}
Klasse (ausführbare Datei)
public class TestPerson {
public static void main(String[] args) {
System.out.println(numFriends + " people at first");
Person p1 = new Person("Otto Mattik", 'M', 22);
p1.setName("Otto Mattik");
p1.setGender('M');
p1.setAge(22);
System.out.println("Person Full Name = " + p1);
Person p2 = new Person("Anna Bollick", 'F', 19);
p2.setName("Anna Bollick");
p2.setGender('F');
p2.setAge(19);
System.out.println("Person Full Name = " + p2);
Person p3 = new Person("Dick Tator", 'M', 33);
p3.setName("Dick Tator");
p3.setGender('M');
p3.setAge(33);
System.out.println("Person Full Name = " + p3);
changeName(p2, "Anna Bollik-Mattik");
Person[] people = {
p1, p2, p3
};
agePersons(people, 5);
System.out.println("\n" + numFriends + " people after 5 years");
for (Person person : people)
System.out.println("Person fullName: " + person);
}
public static void changeName(Person p, String name) {
p.setName(name);
}
public static void agePersons(Person[] people, int years) {
for (Person person : people)
person.setAge(person.getAge() + years);
}
}
Versuchen Sie 'Person.numFriends'. Sie können auch erwägen, 'numFriends' privat zu machen und einen statischen Getter/Setter für Ihre 'Person' Klasse hinzuzufügen. – Zircon
Versuchen Sie in Zukunft, ein [** minimales **, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen. Hier sind nur 2 Zeilen relevant, aber ich musste Strg + F verwenden, um sie in Ihrem Code zu finden. – 4castle
Ich bezweifle, dass numFriends sollte statisch sein, da ich wette jede Person sollte sein eigenes numFriends Feld und Wert haben. Sie müssen 1) möglicherweise Ihr Programmdesign überdenken, und 2) jedes Java-Buch öffnen, da diese Frage sehr einfaches Java ist, etwas, das am besten durch das Lesen Ihres Textes oder Tutoriums gelernt wird. –