2016-06-16 2 views
0

다른 클래스에서 만든 변수 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 두 (실행) 당신은 Person.numFriends을 말할 필요가

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); 
    } 
} 
+1

'Person.numFriends'을 사용해보세요. 또한,'numFriends'를 비공개로 만들고 그것의'Person' 클래스에 정적 getter/setter를 추가하는 것을 고려해보십시오. – Zircon

+0

앞으로 [** 최소 **, 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)를 만들어보십시오. 관련이있는 행은 두 줄 뿐이지 만 Ctrl + F를 사용하여 코드에서 찾아야했습니다. – 4castle

+2

저는 각자가 자신의 numFriends 필드와 값을 가져야하므로 numFriends가 정적이어야한다고 생각하지 않습니다. 당신은 1) 아마도 당신의 프로그램 디자인을 다시 생각할 필요가있다. 그리고 2) 자바 북을 열어 보라.이 질문은 텍스트 또는 튜토리얼을 읽음으로써 가장 잘 익혀지는 매우 기본적인 자바 다. –

답변

3

: 여기에 내 코드입니다. 이는 numFriends가 Person 클래스의 정적 멤버이기 때문에 Person 클래스를 사용하여 numFriends를 참조해야하기 때문입니다.

+1

고마워요. 이것에 관해서는 새로운 것이므로 정말 여러분 모두의 도움에 감사드립니다. – AvenNova

관련 문제