JAVA 7강_7_접근지정자(접근제어자)

열라뽕따히·2024년 2월 20일

JAVA

목록 보기
46/79
post-thumbnail

접근지정자(접근제어자)

  • 접근지정자는 클래스, 멤버변수, 멤버메서드 앞에 사용이 됨
  • 외부로부터 접근을 제어한다는 의미를 가지고 있음
  • 접근지정자가 사용될 수 있는 곳 : 클래스, 멤버변수, 멤버메서드, 생성자 이들과 같은 접근지정자 중 protected, private 접근지정자는 클래스 앞에 사용을 못함. 단, Inner Class 앞에는 사용이 가능함

1. private :

  • 동일한 클래스에서만 접근이 가능
  • 외부에서 인스턴스 변수를 바로 접근이 가능하게 제어를 하면 잘못된 데이터를 저장할 수 있는 문제가 발생함
  • 따라서 직접적인 접근을 제어하고 메서드(setter(), getter())를 사용할 수 있게 접근하게 함

2. default :

  • 동일한 패키지에서만 접근이 가능함. default 키워드는 생략이 가능함
  • 같은 클래스의 멤버, 같은 패키지 안의 다른 클래스의 멤버까지만 접근이 가능함
  • 다른 패키지에 상속 관계에 있는 클래스라도 접근은 불가능함

3. protected :

  • 같은 클래스의 멤버, 같은 패키지 안의 다른 클래스의 멤버까지만 접근이 가능함
  • 다른 패키지에 상속 관계에 있는 멤버에도 접근이 가능함

4. public :

  • 모든 클래스에서 접근이 가능함
  • 같은 클래스의 멤버, 같은 패키지 안의 다른 클래스의 멤버까지만 접근이 가능함
  • 다른 패키지에 상속 관계에 있는 멤버, 다른 패키지의 클래스에 있는 멤버까지 접근이 가능함

[접근 범위(scope)]
public > protected > default > private



Super 클래스 생성


=============================코드=============================
public class Super {
	
	// 멤버변수
	private int num1 = 10;          // 접근지정자 : private
	
	int num2 = 20;                  // 접근지정자 : default
	
	protected int num3 = 30;        // 접근지정자 : protected
	
	public int num4 = 40;           // 접근지정자 : public 

}

Super 클래스를 상속받을 Sub 클래스 생성


=============================코드=============================

public static void main(String[] args) {
		
		Sub sub = new Sub();
		
		// private 접근자는 해당 클래스에서만 접근 가능!!
		//System.out.println("num1 >>> " + sub.num1);   !접근 안 됨!
		
		// default 접근자는 동일한 패키지 내에서만 접근 가능!!
		//System.out.println("num2 >>> " + sub.num2);   !접근 안 됨!
		
		// protected 접근자는 패키지가 다르더라도 상속관계면 접근이 가능
		System.out.println("num3 >>> " + sub.num3);
		
		// public 접근자는 모든 클래스에서 접근이 가능
		System.out.println("num4 >>> " + sub.num4);

	}

=============================실행=============================

0개의 댓글