私は別のクラスで作成した変数numFriendsを呼び出そうとしていますが、そうしようとすると「numFriendsを変数に解決できません」と表示されます。この変数は、新しい友人が追加されるたびに増分され、そのクラスをTestクラスに表示したいとします。ここに私のコードは次のとおりです。Javaの別のクラスの変数にアクセスできませんか?
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);
}
}
CLASS TWO(実行ファイル)
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);
}
}
「Person.numFriends」を試してください。また、 'numFriends'をprivateにして静的getter/setterを' Person'クラスに追加することも考えられます。 – Zircon
将来、[**最小**、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を作成してみてください。関連する行は2行しかありませんが、Ctrl + Fキーを使用してコード内で検索する必要がありました。 – 4castle
私はそれぞれが自分のnumFriendsフィールドと値を持っている必要があるので、numFriendsは静的でなければならないとは思っていません。あなたは1)あなたのプログラム設計を再考する可能性があり、2)Javaの本を開くことが必要です。なぜなら、この質問は非常に基本的なJavaであり、あなたのテキストやチュートリアルを読むことによって最もよく習得されます。 –