본문 바로가기
Application/Java

[Jump2Java] 07장 접근 제어자

by 윤루트 2021. 9. 16.

자바의 접근 제어자

  1. private
  2. default
  3. protected
  4. public
  • private -> default -> protected -> public 순으로 보다 많은 접근을 허용한다.

Private

  • private 이 붙은 변수, 메소드
    • 해당 클래스에서만 접근이 가능하다.
public class AccessModifier {
    private String secret;
    private String getSecret() {
        return this.secret;
    }
}
  • secret과 getSecret 메소드는 오직 AccessModifier 클래스에서만 접근이 가능하고 다른 클래스에서는 접근이 불가능하다.

Default

  • 접근 제어자를 설정하지 않는다면 접근 제어자가 없는 변수, 메소드는 default 접근 제어자가 된다.
    • 해당 패키지 내에서만 접근이 가능하다.
// HouseKim.java

package jump2java.house;

public class HouseKim {
    String lastname = "kim";
}
// HousePark.java

package jump2java.house;

public class HousePark {
    String lastname = "park";

    public static void main(String[] args) {
        HouseKim kim = new HouseKim();
        System.out.println(kim.lastname);
    }
}

// 출력: kim
  • HouseKim과 HousePark는 패키지가 jump2java.house로 동일하다.
  • HouseKim의 lastname은 접근 제어자 설정이 안되어 있으므로 default이다.
  • 그러므로 같은 패키지 내에서 kim.lastname으로 접근 가능하다.

Protected

  • protected가 붙은 변수, 메소드는 다음에서 접근 가능하다.
    • 동일 패키지내의 클래스
    • 해당 클래스를 상속받은 외부 패키지의 클래스
    // HousePark.java
    
    package jump2java.house;
    
    public class HousePark {
        protected String lastname = "park";
    }​
    // EungYongPark.java
    
    package jump2java.house.person;
    
    import house.HousePark;
    
    public class EungYongPark extends HousePark {       
        public static void main(String[] args) {
            EungYongPark eyp = new EungYongPark();
            System.out.println(eyp.lastname);       
        }    
    }
    
    // 출력 결과: park​

    • HousePark 클래스를 상속 받은 EungYongPark
    • HousePark와 package는 다르다
      • HousePark: jump2java.house
      • EungYongPark: jump2java.house.person
    • HousePark에서 lastname이 protected라서 eyp.lastname으로 접근이 가능하다.
      • 만약 default로 되어있다면 컴파일 에러가 났을 것
    Public
    • public이 붙은 변수, 메소드
      • 어떤 클래스에서던지 접근 가능하다.
    • 접근 제어자를 이용하면 프로그래머의 코딩 실수를 방지할 수 있고 기타 위험요소를 제거할 수 있는 등의 많은 장점이 있다.

댓글