Public과 Private

2020. 12. 22. 15:552021/JOB DA STUDY

Private < Default < Protected < Public

 

1. Private은 Class외부에서 접근 할 수 없는 변수를 의미하므로 해당 클래스에서만 접근이 가능


Public class AccessModifier{
	private String secret;
    private String getSecret();{
    	return this.secret;
    }
}

secreet, getSecret 메소드는 오직 AccessModifier 클래스에서만 접근 가능

 

2. Default는 접근제어자를 별도로 설정하지 않는 경우 접근제어자가 없는 변수, 메소드는 default 접근제어자가 되어 해당 패키지 내에서만 접근이 가능


package examplejava.food;

public class Korea{
	String hansick = "Kimchie";
}

package examplejava.food;

public class America{
	String hansick = "Hamburger";
    
    public static void main(Stirng[] args){
    	Korea korea = new Korea();
        System.out.println(korea.hansick);
}

Korea 와 America는 패키지가 food로 동일하다.

Korea의 hansick변수는 접근 제어자가 default이므로 America 클래스의 main 메소드에서 사용한 것과 같이 Korea.hansick 으로 Korea클래스의 hansick 변수에 접근이 가능하다.

 

3. Protected는 protected가 붙은 변수, 메소드의 경우 "동일 패키지 내의 클래스" 또는 해당 클래스를 "상속받은 외부 패키지의 클래스"에서 접근 가능 (상속관계가 없는 다른 패키지 클래스 차단)

 

  • 잠재적으로 자식 클래스가 Override해서 바꾸어야 할 경우를 고려한 Modifier -> "완성되지 못한 혹은 완성될 수 없는" 클래스
  • 그대로 써도 충분할 정도로 이미 완성된 메소드를 의미하는 public과 달리 protected의 경우 자식 클래스의 특성에 따라 적절히 변경

package examplejava.food;

public class Food{
	protected String hansick = "kimchie";
    }

package examplejava.food.korea;

import food.Food;

public class Sort extends Food{
	public static void main(Stirng[] args){
    	Sort sort=new Sort();
        system.out.println(sort.hansick);
    }
}

Food 클래스를 상속받은 Sort 클래스의 패키지는 Food클래스의 패키지와 다르지만,

Food의 hansick 변수는 protected로 설정되어있기 때문에 sort.hansick과 같은 접근이 가능

 

4. Public이 붙은 변수, 메소드는 어떤 클래스에서라도 접근이 가능

'2021 > JOB DA STUDY' 카테고리의 다른 글

3주차 과제: 연산자  (0) 2020.12.27
MD5 암호화  (0) 2020.12.23
Instanceof  (0) 2020.12.21
Argument 와 Parameter  (0) 2020.12.21
Map  (0) 2020.12.18