본문 바로가기
JAVA/개념

[ 개념 ] 자바(java) 접근제한자란

by hak0205 2020. 11. 15.
반응형

자바 접근제한자란

자바(java)에서 접근 제한자는 총 4가지로 구성이 되어있습니다.

private -> default -> protected -> public 순으로 올라갈 수록 접근범위가 커집니다.

 

1. private

private접근제한자는 외부에 공개되지 않으며, 외부에서는 직접 접근할 수 없으며 해당 클래스에서만 접근이 가능합니다.

 

 public class Private_ex {
    private String privateEx = "private는 같은 클래스에만 접근할수 있습니다.";
    private String getAbc(){
        return this.privateEx;
    }
 }

 

2. default

접근제어자를 별도로 설정하지 않는다면 default 접근제한가 되어 해당 패키지 내에서만 접근이 가능합니다. 

 

 package test;

 public class Default_ex {
    String default_ex = "접근제한자가 아무것도 없는것은 기본적으로 default가 되며";
    String default_ex1 = "defualt는 같은 패키지내에서만 접근 가능합니다.";
 }

 

 package test; //같은 패키지에 있습니다.

 public class Default_test {

    public static void main(String[] args) {
        Default_ex default_ex = new Default_ex();
        
        System.out.println(default_ex.default_ex);
        //접근제한자가 아무것도 없는것은 기본적으로 default가 되며
        System.out.println(default_ex.default_ex1);
        //default는 같은 패키지내에서만 접근 가능합니다.
    }
    
 }

 

3. protected

protected 접근제한자는 같은 패키지에 속하는 클래스와 다른 패키지에 속하는 자식 클래스까지만 허용합니다.

 package test;

 public class Protected_ex {
    protected String protected_ex ="같은패키지 또는 다른패키지이면서 상속받은 클래스만 접속가능합니다.";
 }

 

 package test.test_other;//다른 패키지입니다.

 import test.Protected_ex;

 public class Protected_test extends Protected_ex { //상속을 받은 클래스입니다.

    public static void main(String[] args) {
        Protected_ex pe = new Protected_ex();
        System.out.println(pe.protected_ex); //Protected_ex의 protected_ex가 접근이 가능합니다.

    }
 }

 

4. Public

public 접근제한자는 프로그램에서 누구나 접근이 가능합니다.

그리고  public 메소드를 통해서만 해당 객체의 private 멤버에 접근할 수 있으므로

public 메소드는 private 멤버와 프로그램 사이의 인터페이스(interface) 역할을 수행한다고 할 수 있습니다.

 public class Public_ex {
    public String pe = "누구나 접근이 가능합니다.";
    public String getPe(){
        return this.pe;
    }

    private String pe1 = "private는 public를 통해서 외부에서 접근이 가능합니다.";
    public String getPe1(){
        return getPe1();
    }   
 }

접근 제어자 같은 클래스 같은 패키지 자식 클래스 프로그램내
public O O O O
protected O O O X
default O O X X
private O X X X

 

 
반응형

댓글