IT의 다이어리/JAVA

Java의 접근지정자1 (AccessModifier)

류곤 2024. 12. 27. 18:20

오늘은 접근지정자에 대해 작성해볼까 합니다

 

《접근지정자란?》

클래스와 클래스 사이 혹은 클래스의 멤버간의 접근을 제어하는 기능을 가진 한정자

private < default(생략형,package) < protected < public

 

  • private : 자기 클래스안에서만 접근가능. 다른 클래스에서는 접근 불가능

  • public: 모든 클래스에서 접근 가능.

  • 생략형(package,default) : 같은 패키지내에 있는 클래스들끼리는 접근 가능

 

《접근지정자를 붙일 수 있는 곳

 

1]접근지정자 [modifier] class 클래스명
2]접근지정자 [modifier] final 자료형 멤버상수=초기값:접근지정자와 modifier는 순서는 상관없다.
	final 접근지정자 자료형 멤버상수 =초기값
3]접근지정자 [modifier] 자료형 멤버변수;
4]접근지정자 [modifier] 반환타입 메소드명;

 

※단, class 앞에 붙일 수 있는 접근지정자는 public과 생략형(package)만 붙일 수 있습니다.

결론적으로 인터페이스와 클래스와 클래스의 모든 멤버에는 접근지정자를 붙일 수 있습니다.

 

《접근지정자 첫번째 예제

package accessmodifiers;

class PackageClass{}//생략형(패키지/디폴트) 접근 지정자가 붙은 클래스
public class AccessModifierOne {
	//[필드]
	public int publicVar;
	int packageVar;
	private int privateVar;
	
//[멤버 메소드]
public void publicMethod() {
	//public int localVar=1;//[x]
	//다른 클래스에서 직접 호출이 불가능하니까(접근 불가)
	//접근이 가능한 메소드에서 호출 한다 
	privateMethod();
 }
    
void packageMethod() {}
	
private void privateMethod() {
	//private이 붙은 멤버는 자기 클래스안에서는 어디서든 접근 가능
	System.out.println(privateVar);
   }
}

 

 

《접근지정자 두번째 예제

package accessmodifiers;

//AccessModifierTwo클래스는 AccessModifierOne과 같은 패키지 안에 있다.
//AccessModifierOne의 멤버(변수,메소드)에 접근해 보자
public class AccessModifierTwo {
    //[필드]
    //두 클래스 모두 같은 패키지안에 있기 때문에 import할 필요 없다.
    AccessModifierOne one;
//[멤버 메소드]
public void access() {
    /*
    * AccessModifierOne 멤버중 private이 붙은 멤버는 접근불가]-클래스가 서로 다름으로

    * private이 붙은 멤버는 주로 public이 붙은
    * 멤버 메소드를 통해서 간접으로 호출할 수 있다.
    * 직접 호출불가(접근이 안되니까)
    */
    one = new AccessModifierOne();
    //필드에 접근
    //one.privateVar=10;//[x]is not visible
    one.packageVar=10;
    one.publicVar=10;
    //멤버 메소드에 접근
    //one.privateMethod();//[x]is not visible
    one.packageMethod();
    one.publicMethod();
    //PackageClass클래스는 접근지정가 생략형(패키지)이지만
    //AccessModifierTwo와 같은 패키지 안에
    //있기 때문에 접근가능
    PackageClass pack = new PackageClass();
  }
}

 

《접근지정자 세번째 예제 - 다른 패키지 접근

package accessmodifiers.another;

import accessmodifiers.AccessModifierOne;

//AccessModifierTwo클래스는 AccessModifierOne과 다른 패키지 안에 있다.
//AccessModifierOne의 멤버(변수,메소드)에 접근해 보자
public class AccessModifierTwo {
	
	AccessModifierOne one;
	
//[멤버 메소드]
public void access() {
    //[멤버변수(필드)]
    //AccessModifierOne클래스는 다른  패키지안에 있기때문에
    //사용하려면 import해야한다.(단,접근 지정자가 public이어야 한다)
    one = new AccessModifierOne();
    //필드에 접근
    //one.privateVar=10;//[x]is not visible
    //one.packageVar=10;//[x]is not visible
    one.publicVar=10;
    //멤버 메소드에 접근
    //one.privateMethod();//[x]is not visible
    //one.packageMethod();//[x]is not visible
    one.publicMethod();
    //PackageClass클래스는 접근지정자가 생략형이라
    //다른 패키지에서는 보이지 않음으로
    //import불가.즉 사용 불가
    //PackageClass pack = new PackageClass();//[x]
   }
}

 

 

'IT의 다이어리 > JAVA' 카테고리의 다른 글

Java의 접근지정자와 지정자(modifiers)  (0) 2024.12.30
Java의 추상화(abstraction)  (2) 2024.12.26
Java의 메소드(Method)  (0) 2024.12.23
Java의 2차원 배열  (0) 2024.11.27
Java의 1차원 배열  (0) 2024.11.25