반응형
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 |