• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

섹션 10. Comparable

24.05.18 20:31 작성 24.05.18 20:31 수정 조회수 87

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 메소드의 매개변수 oMyUser 클래스의 또 다른 인스턴스입니다. 클래스 내부에서는 다른 인스턴스의 private 멤버에도 접근할 수 있는 권한이 있습니다. 이는 자바의 접근 제어 규칙 중 하나입니다.

즉, 같은 클래스 내부에서는 그 클래스의 인스턴스들이 서로의 private 멤버 변수에 접근할 수 있습니다

따라서 o.ageMyUser 클래스 내에서 접근할 수 있으며, 이는 컴파일 오류 없이 정상적으로 동작합니다.

감사합니다.