티스토리 뷰

접근 지정자(접근 제한자)(Access modifier) 

  • 접근 지정자는 객체 지향의 4대 개념(추상화, 캡슐화, 상속, 다형성)에서 캡슐화와 관련되어 있다. 
  • 즉, 캡슐화라는 개념이 포함하고 있는 '은닉화'와 밀접한 관련이 있다. 
  • 접근 지정자에는 public, protected, default, private 4종류가 있다.
  • 접근 지정자의 접근 가능 범위 private < default < protected < public
접근 지정자  접근 범위 동일 클래스  동일 패키지  다른 패키지의 
자식 클래스
다른 패키지 
public 접근 제한 없음 O O O O
protected 동일 패키지/상속 받은 서브 클래스  O O O X
default 동일 패키지  O O X X
private 동일 클래스 O X X X

 

☞ public

public class World { //public class
	...	
}
  • 모든 패키지에서 제한 없이 접근이 가능하다. 

☞ default

class Local { //default 클래스
	...
}
  • package-private 이라고도 하며, 같은 패키지의 클래스에만 접근을 허용한다. 

☞ private 

class A {
	private int data;
    
    private void doIt(){
    // 필드 data는 동일 클래스 내부에서만 접근이 가능하다.
    System.out.println(data);
    }
}


class javaStudy {
	public static void main(String[] args){
    	A a = new A();
        System.out.println(a.data);
        // error: 필드 A.data 에 접근이 불가함
        a.doIt();
        // error: private 함수에 접근이 불가함
    }
}
  • private 접근 제어자를 사용하면 해당 멤버에는 외부에서 접근이 불가능하며, 오로지 동일 클래스 내부에서만 접근이 가능하다. 

☞ protected

package pk;

public class javaStudy{
	protected void sayHello(){
    	System.out.println("Hello");
    }
}
package pk;
import pk.javaStudy;

class study7 extends javaStudy {
	public void method(){
    	// javaStudy 클래스의 멤버에 접근
        sayHello();
        
        // 인스턴스로 접근 시 상속받은 객체를 인스턴스화 해야한다.
        study7 st = new study7();
        st.sayHello();
    }
}
  • protected 로 선언된 멤버는 같은 패키지에 속한 경우이를 상속한 클래스만 접근이 가능하다. 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함