자바 클래스에서 private 선언 질문이요

조회수 363회

java는 아직 익숙치 않아서 그나마 익숙한 c++이랑 비교해가면서 공부중인데요

class Person implements Comparable<Person>
{
    private String name;
    private int age;
    public Person (String name, int age) {
        this.name=name;
        this.age=age;
    }
    @Override
    public String toString() {
        return name + "(" + age + ")";
    }
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
    @Override
    public boolean equals(Object ob) {
        if(name == ((Person)ob).name && age == ((Person)ob).age)
            return true;
        else 
            return false;
    }
    @Override
    public int compareTo(Person p) {
        return this.age-p.age;
    }
}

여기서 맨 아래 Override 한 두 메소드를 보시면 name, age 둘 다 private로 선언을 했는데 p, ob의 name, age를 단순히 .name .age로 접근을 할 수 있는지 궁금합니다. 제가 알기론 c++에서는 위와 같은 방법으로 접근이 불가능 해서 get함수를 따로 선언을 했었던거 같은데 java는 뭐 때문에 위와 같이 할 수 있는지 궁금합니다

  • c++ 와 다르지 않은 것 같습니다. class Person 의 멤버 함수에서는 Person 멤버 변수에 직접적인 접근이 가능합니다. get 함수를 정의할 때는 class 외부에서 private 멤버 변수에 접근할 때 사용합니다. 김정현 2022.7.27 13:21
  • Person p는 인자로 받은 객체여서 외부로 취급하는거 아니었나요? 듣고보니 그런거같기도 해서 헷갈리네요 skatjdehddms 2022.7.28 00:49

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)