관리 메뉴

개발 기록이

[JAVA] public, private, static, final 정리 본문

웹 개발/Back-end

[JAVA] public, private, static, final 정리

studyingbackhoe 2025. 1. 30. 17:14

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)