Java

[Java] Modifier

wwxs 2024. 9. 9. 17:19

Modifier (접근 제어자)

  • 클래스, 메서드, 변수의 접근 범위를 제어

1. 접근 제어자의 종류

  • private, default, protected, public
  • 접근 제어자가 지정되지 않은 경우 default(기본값)으로 지정

2. 접근 제어자의 범위

public > protected > ( default ) > private

 

1) private

  • 같은 클래스 내에서만 접근 가능

2) default

  • 같은 패키지 내라면 중복 X
  • 패키지 외부에서 접근 X, 패키지 내부에서 접근 O

3) protected

  • 동일한 패키지 내의 모든 클래스와 다른 패키지의 하위 클래스에서 접근 가능

4) public

  • 어떤 클래스든 어떤 패키지 내에 있든 접근 가능

 

(예제 코드)

더보기
더보기
import otherPackage.ParentClass;

1) private
class PrivateClass{
	private int myField;
	private void myMethod() {		
	}
}

2) default
class DefaultClass{
	// 같은 패키지 내의 다른 클래스들에 접근 가능
	int myField;
	void myMethod() {
		
	}
}

3) protected
class ProtectedClass extends ParentClass{
	protected int myField;
	
	public ProtectedClass() {
		// protected 속성과 메서드일 경우
		// >> 상속받은 클래스에서 다른 패키지더라도 접근 가능
		System.out.println(protectedField);
		exampleMethod();	// 상속받은 클래스에서 호출 가능
	}
}

4) public
public class A_Modifier {
	static String name = "홍동현";
	public static void main(String[] args) {
		
		PrivateClass pc = new PrivateClass();
//		pc.myField;
		// >> private 설정 된 속성과 메서드는 해당 클래스 내부에서만 읽을 수 있음
		
		DefaultClass dc = new DefaultClass();
		dc.myField = 10;
		dc.myMethod();
		
		ProtectedClass pc2 = new ProtectedClass();
		
	
	}
}
package otherPackage;



public class ParentClass {
		public String publicField;
		
		protected String protectedField;
		
		// == default ==
		public ParentClass() {
			this.protectedField = "안녕하세요";
		}
		
		protected void exampleMethod() {
			System.out.println("상속받은 클래스에서 호출 가능");
		}
	
}
package chapter07;

import chapter07.A_Modifier;

//class DefaultClass{
//	
//}

public class B_Modifier {
	public static void main(String[] args) {
		System.out.println(A_Modifier.name);	// 홍동현
	}
}

 

'Java' 카테고리의 다른 글

[Java] final  (0) 2024.09.09
[Java] Encapsulation  (0) 2024.09.09
[Java] Overriding  (0) 2024.09.09
[Java] Inheritance  (0) 2024.09.09
[Java] Constructor  (0) 2024.09.06