Pubilc과 Private

SeungJoo
|2023. 11. 1. 14:03
반응형

public과 private 그것이 문제로다...

public과 private의 선택의 길에서 고를 때 항상 왜 뭘 써야 하지라고 생각하게 되어서 Public과 Private에 대해 알아보게 되었습니다.

접근 제어자

프로그래밍 언어에서 클래스, 메서드, 변수 및 다른 멤버들에 대한 접근 권한을 제어하는 데 사용합니다.

제어자는 코드의 보안, 모듈성 및 유지보수를 향상하는데 도움이 됩니다.

[출처]한빛 미디어

public

어떤 클래스나 패키지든 접근이 가능하며, 패키지에서 자유롭게 사용할 수 있습니다.

  • 외부에서 직접 접근할 수 있으므로 주로 라이브러리, API, 인터페이스 등에 사용합니다.
  • 주의해서 사용해야 하며, 인터페이스와 추상 클래스의 메서드 등에 많이 사용합니다.
public class Class{
    public int Price; // 어디서나 접근 가능
    public void publicMethod(){ // 어디서나 호출이 가능
    }
}

public 예시

public class Person {
    public String name; 

    public Person(String name) {
        this.name = name;
    }

    public void meet() {
        System.out.println(name);
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person("Joo");
        System.out.println(person.name);
        person.meet();
    }
}

private

해당 멤버는 오직 그 멤버가 속한 클래스 내부에서만 접근이 가능합니다. 외부 클래스에서 접근할 수 없습니다.

  • 접근 제어 지시자는 가장 낮은 가시성을 가지고 클래스 내부에서만 접근 가능합니다.
  • 데이터 은닉을 구현하고 클래스 내부를 보호할 때 사용합니다.
public class Class {
    private int Price; // 클래스 내부에만 접근 가능
    private void privateMethod() {
    }
}

private 예시

public class BankAccount {
    private double balance; 

    public BankAccount() {
        this.balance = 0.0;
    }

    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        }
    }

    public void withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount; 
        }
    }

    public double getBalance() {
        return balance;
    }
}

public class Main {
    public static void main(String[] args) {
        BankAccount account = new BankAccount();
        account.deposit(1000);
        account.withdraw(500);
        System.out.println(account.getBalance());
    }
}

protected

같은 패키지 내에서는 접근 가능하고, 상속 관계에 있는 하위 클래스에서도 접근 가능합니다.

public class Class {
    protected int Price; // 같은 패키지와 상속 관계 접근 가능
    protected void protectedMethod(){
    }
}

default

접근 제어자를 명시적으로 지정하지 않을 때 사용합니다. default는 패키지 내에서만 접근 가능합니다.

public class Class {
    int Variable;
    void defaultMethod(){
    }
 }
728x90

'JAVA' 카테고리의 다른 글

SOLID  (0) 2023.11.11
Stream(기초)  (0) 2023.10.30
Lambda  (0) 2023.10.29