hyeongwoo's blog

[Java] 접근제한자 본문

JAVA

[Java] 접근제한자

toribro 2024. 2. 13. 10:24

자바에서는 클래스의 멤버변수나 멤버함수에 접근을 제한 할 수 있는데 이때 사용하는 것을 접근제한자라고 한다.

접근제한자의 종류는 다음과 같다

  1. prviate : 클래스 내부에서만 접근가능하다.
  2. default(package): 같은 패키지에서만 접근이 가능하다.
  3. protected : 상속관계 클래스에서 접근이 가능하다.
  4. public : 어디서든 접근이 가능하다.

 접근 범위는 대략적으로 아래와 같다.

package 파일1;

public class 클래스1{
  
   private int a;
   int b;
   protected int c;
   public int d=0;
   
   public 클래스1(){
      a=0;
      b=0;
      c=0;
      d=0;
   }
   
   
}



---패키지 변경---
---------------------------------------
package 파일2;
import 파일1.클래스1;

public class 클래스2{

   private 클래스1 cl;
    
    public 클래스2(){
       cl=new 클래스1();
      // cl.a=1//x 접근불가
       //cl.b=1//x 다른 패키지 접근불가
      // cl.c=1//x 상속관계 아니므로 접근 불가
       cl.d=1 //public접근 가능
    }

}

//클래스가 상속관계일때
public class 클래스3 extends 클래스1{

    private 클래스1 cl;
    
    public 클래스3(){
       cl=new 클래스1();
       
       //cl.a=2//x 접근불가
       //cl.b=2//x 다른 패키지 접근불가
       cl.c=2// 상속관계 이므로 접근 가능
       c1.d=2 //public접근 가능
    }

}

 

멤버변수는 private으로 지정한다.

클래스의 멤버변수는 private으로 설정하는 것이 원칙이다. 왜냐하면 데이터 무결성을 유지해야되기때문이다.

데이터 무결성이란 , 데이터가 전송되고 처리되는 과정에서 데이터가 변경되거나 손상되지 않는 것이다.

만약에 멤버변수가 public으로 되어있어 외부에서 의도적으로 접근해 데이터를 바꿔버리면 데이터가 변형되 데이터 무결성이 깨진다. 그러므로 외부에서 멤버변수로 함부로 접근을 못하게 private으로 설정해야한다. 만일 접근이 필요할시 setter 메소드를 만들어 접근이 가능하게 한다. 

 

 

'JAVA' 카테고리의 다른 글

[Java] 컬렉션  (0) 2024.02.12
[Java] 제네릭  (0) 2024.02.12
[Java] final  (0) 2024.02.10
[Java] IO_(입출력스트림)  (0) 2024.02.02
[Java] None_Static영역과 Static영역  (0) 2024.02.02