인프런 커뮤니티 질문&답변

권정익님의 프로필 이미지
권정익

작성한 질문수

김영한의 실전 자바 - 중급 2편

섹션 10. Comparable

해결된 질문

작성

·

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

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

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

감사합니다.

권정익님의 프로필 이미지
권정익

작성한 질문수

질문하기