해결된 질문
작성
·
140
·
수정됨
0
public class MyUser implements Comparable<MyUser> {
private String id;
private int age;
public MyUser(String id, int age) {
this.id = id;
this.age = age;
}
public String getId() {
return id;
}
public int getAge() {
return age;
}
@Override
public int compareTo(MyUser o) {
return this.age < o.age ? -1 : (this.age == o.age) ? 0 : 1;
}
MyUser의 멤버 변수는 private인데 compareTo(MyUser o)에서 this.age는 본인의 값을 가져다 쓴다고 쳐도 o.age로 호출이 어떻게 가능한 건가요??
답변 1
2
안녕하세요. 권정익님
위 코드에서 compareTo
메소드의 매개변수 o
는 MyUser
클래스의 또 다른 인스턴스입니다. 클래스 내부에서는 다른 인스턴스의 private 멤버에도 접근할 수 있는 권한이 있습니다. 이는 자바의 접근 제어 규칙 중 하나입니다.
즉, 같은 클래스 내부에서는 그 클래스의 인스턴스들이 서로의 private 멤버 변수에 접근할 수 있습니다
따라서 o.age
는 MyUser
클래스 내에서 접근할 수 있으며, 이는 컴파일 오류 없이 정상적으로 동작합니다.
감사합니다.