개발 기록이
[JAVA] public, private, static, final 정리 본문
1. public vs private
- public: 누구나(어디서든) 접근 가능
- private: private이 선언된 메서드나 변수가 속한 클래스 안에서만 접근 가능
public class PrivateTest {
public static void main(String[] args) {
Cafe cafe = new Cafe();
cafe.orderCoffee(); // 커피 주문하기(호출 가능)
// cafe.makeCoffee(); // private라서 호출 불가
}
public static class Cafe {
private void makeCoffee() { // 카페 관계자만 사용 가능(커피 만들기)
System.out.println(" === ☕ 커피 만드는 중 === ");
}
public void orderCoffee() { // 누구나 호출 가능 (커피 주문하기)
makeCoffee();
System.out.println(" === 커피 주문 완료 === ");
}
}
}
2. static
원래 메서드나 변수는 객체(new로 만든 인스턴스)에 속하는데, static을 붙이면 클래스 자체에 속해서 객체 없이도 사용이 가능하다.
ex) CafeOrder order = new CafeOrder(); 없이도 바로 호출이 가능하다.
public class StaticTest {
public static void main(String[] args) {
System.out.println("📜주문번호1 : " + CafeOrder.getOrderNum());
System.out.println("📜주문번호2 : " + CafeOrder.getOrderNum());
}
public class CafeOrder {
private static int orderNumber = 0; // 모든 주문에서 공유되는 번호
public static String getOrderNum() { // 객체 없이 호출 가능
String str = "ORDER";
orderNumber++; // 주문번호 증가
return str + orderNumber;
}
}
}
3. final
final을 쓰면 값, 메서드, 클래스가 절대 변경되지 않도록 보호된다.
- final 변수: 값 변경 불가
- final 메서드: 오버라이딩 불가
- final 클래스: 상속 불가
public class FinalTest {
public static void main(String[] args) {
System.out.println("☕ 아메리카노 가격: " + CafeMenu.AMERICANO_PRICE + "원");
}
public class CafeMenu {
public static final int AMERICANO_PRICE = 3000; // 아메리카노 가격 (변경 불가)
}
}
정리
✅ public vs private → 누가 이 코드를 쓸 수 있는지
- public: 누구나 이 코드를 사용할 수 있다.
- private: 오직 이 클래스 안에서만 사용할 수 있다.
✅ static → 객체 없이도 호출 가능
- 객체를 만들지 않고 클래스 이름으로 바로 호출할 수 있다.
✅ final → 값, 메서드, 클래스가 절대 변경되지 않음
- 값, 메서드, 또는 클래스가 한 번 정해지면 변경 불가하다.
출처 : OpenAI ChatGPT (https://openai.com)
'웹 개발 > Back-end' 카테고리의 다른 글
[JAVA] Base64 인코딩을 이용해서 암복호화하기 (0) | 2025.02.09 |
---|---|
[JAVA] ExecutorService 비동기 처리 (0) | 2025.01.19 |
[JAVA] 서버 IP와 클라이언트 IP 값 가져오기 (0) | 2024.10.20 |
[Spring] JPA 개념 정리 (Hibernate, Spring Data JPA) (0) | 2024.09.15 |
[Spring] dofilter filterchain 이란? (0) | 2024.08.23 |