Java의 정석 - 접근 제어자

원태연·2022년 5월 30일
0

Java의 정석

목록 보기
10/19
post-thumbnail

제어자

상수를 선언할 때 사용한 final, 클래스 변수로 선언할 때 사용한 static등 선언부에서 변수나 메서드의 부가적인 의미를 더해주는 것을 제어자라고 한다.

  • 접근 제어자 : public, protected,(default), private
  • 그 외: static, final, abstract ...

등이 있다.

접근 제어자

접근 제어자는 해당하는 멤버 또는 클래스의 접근 범위를 결정한다.

  • 접근 가능 범위
제어자같은 클래스같은 패키지자손클래스전체
public0000
protected000
(default)00
private0
  • 사용가능 대상
제어자클래스메소드멤버 변수지역 변수
public000
protected00
(default)00
private00
package playground;

class Person{
   private int age;
   public int birthYear;

   Person(int age, int birthYear){
       this.age = age;
       this.birthYear = birthYear;
   }

   public void printAge(){
       if (!isTrueAge(age)){
           System.out.println("Wrong age");
           return;
       }
       System.out.println(age);
   }
   private boolean isTrueAge(int age){
       if (age < 0) {
           return false;
       }
       return true;
   }
}

public class playGround {
   public static void play() {
       Person me = new Person(23,1999);
//        System.out.println(me.age);   age라는 변수는 private이기 때문에 접근 불가
       System.out.println(me.birthYear); // 1999
       me.printAge();                    //  23
//      me.isTrueAge();  isTrueAge메소드가 private
   }
}

접근제어자를 통해 얻을 수 있는 이점들이 있는데,

  • 접근 제어를 통해 데이터를 보호할 수 있고, (age의 값의 유효를 판단 가능)
  • 접근 제어관리를 통해 불필요한 데이터들의 사용에 대한 복잡성을 줄일 수 있다.

멤버변수나 메소드의 범위가 좁게 한정되어 있다면, 이를 수정하고 테스트하는데 고려해야할 사항이 줄어들고, 멤버변수나 메소드의 의미를 더 명확하게 선언할 수 있다.

제어자 조합

제어자는 여러번 사용할 수 있는데, 접근 제어자는 한 번만 선언 가능하다.

public static, private static...

제어자의 범위와 의미를 정확히 이해한다면, abstract final class a{...}와 같은 모순되거나 필요없는 경우의 조합을 피할 수 있다.

profile
앞으로 넘어지기

0개의 댓글