JAVA DAY18 - 객체지향 프로그래밍 Ⅱ - 2 접근제어자

어뮤즈온·2020년 12월 8일
0

초급자바

목록 보기
25/31

접근제어자

  • public : 접근제한이 없다.
  • protected : 같은 패키지 + 상속받은 클래스에서 접근 가능
  • default : 같은 패키지에서만 접근 가능
  • private : 클래스 내에서만 접근 가능
public class AccessModifier{
	public String publicVar = "public : 접근제한이 없음";
    	protected String protectedVar = "protected : 같은 패키지 + 상속받은 클래스에서 접근 가능";
   	String defaultVar = "default : 같은 패키지에서만 접근 가능";
    	private String privateVar = "private : 클래스 내에서만 접근 가능";
        
        puublic void publicMethod(){
        	System.out.println(publicVar;
        }
        
        protected void protectedMethod(){
        	System.out.println(protectedVar);
        }
        
        void defaultMethod(){
        	System.out.println(defaultVar);
        }
        
        private void privateMethod(){
        	 System.out.println(privateVar);
        }
        
        public static void main(String[] args){
        	AccessModifier am = new AccessModifier();
            
            	System.out.println(am.publicVar);
            	am.publicMethod();
            
            	System.out.println(am.protectedVar);
		am.protectedMethod();
		
		System.out.println(am.defaultVar);
		am.defaultMethod();
		
		System.out.println(am.privateVar);
		am.privateMethod();
        }
}

//AccessModifier와 같은 패키지의 클래스
public class AccessTest{ 
	public static void main(String[] args) {
		AccessModifier am = new AccessModifier();
		
		System.out.println(am.publicVar);
		am.publicMethod();
		
		System.out.println(am.protectedVar);
		am.protectedMethod();
		
		System.out.println(am.defaultVar);
		am.defaultMethod();
		
//		System.out.println(am.privateVar);
//		am.privateMethod();
		//오류 : 같은 클래스에서만 사용가능
	}
}


//AccessModifier에게 상속받은 다른 패키지의 클래스
import g_oop2.AccessModifier;

public class AccessTest extends AccessModifier {
	
	public static void main(String[] args) {
		AccessModifier am = new AccessModifier();
		
		System.out.println(am.publicVar);
		am.publicMethod();
		
//		System.out.println(am.protectedVar);
//		am.protectedMethod(); //상속받기 전에 사용 불가
		
//		System.out.println(am.defaultVar);
//		am.defaultMethod();
//		
//		System.out.println(am.privateVar);
//		am.privateMethod();
		
		//상속받고 사용하는 방법
		AccessTest at = new AccessTest();
		
		System.out.println(at.protectedVar);
		at.protectedMethod();
	}
	
}

접근제어자를 사용하는 이유

  • 데이터를 보호하기 위해
  • 사용하는데 불필요한 멤버를 숨기기 위해
profile
Hello, world!

0개의 댓글