제어자

김민성·2022년 7월 14일
0

Java

목록 보기
17/47
post-thumbnail

제어자

제어자란 클래스, 변수, 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다.

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

접근 제어자

  • public : 모든 곳에서 접근 가능
  • protected : 같은 패키지 안에서 접근 가능, 단 다른 패키지의 자식클래스에선 접근가능
  • default : 같은 패키지에서만 접근가능
  • private : 같은 클래스에서만 접근 가능
제어자같은 클래스같은 패키지자식클래스전체
publicOOOO
protectedOOOX
(default)OOXX
privateOXXX
  • private나 protected로 접근이 제한된 멤버변수는 getter와 setter 메서드를 이용해 간접적으로 접근한다.

    public class Main{
    	public static void main(String[] args) {
    		GetSet gs = new GetSet();
    		gs.set(2, 3, 4);
    		System.out.println("a = " + gs.getA());		// a = 2
    		System.out.println("b = " + gs.getB());		// b = 3
    		System.out.println("c = " + gs.getC());		// c = 4
    	}
    }
    
    class GetSet {
    	private int a, b, c;
    	
    	public void set(int a, int b, int c) {
    		this.a = a;
    		this.b = b;
    		this.c = c;
    	}
    	
    	public int getA() {
    		return a;
    	}
    	
    	public int getB() {
    		return b;
    	}
    	
    	public int getC() {
    		return c;
    	}
    
    }

    위의 코드를 보자. GetSet 클래스에는 a, b, c 의 접근 제어자가 private 으로 되어 있다. 따라서 다른 클래스에서 이 멤버변수에 접근하기 위해 get, set 메서드를 만들었다.

    get 메서드는 세 개의 매개변수를 받아와 멤버변수 a, b, c에 각각 할당한다.

    그리고 get 메서드는 각각 a, b, c를 반환한다.

    그 후 main 메서드에서 GetSet 클래스 타입의 객체 gs를 생성 하고, set 메서드를 호출해 매개변수로 2, 3, 4를 넘겨준다. 그리고 get 메서드를 호출해 출력해주면 넘겨준 2, 3, 4가 a, b, c에 잘 할당되어 출력되는 것이다.

  • 제어자의 조합

    • 메서드에 static과 abstract를 함께 사용할 수 없다.
    • 클래스에 abstract와 final을 동시에 사용할 수 없다.
    • abstract메서드의 접근 제어자가 private일 수 없다.
    • 메서드에 private와 final을 같이 사용할 필요가 없다.

0개의 댓글