java public static 키워드

    

**Java는 다른 언어보다 `public`, `static` 같은 키워드를 많이 붙이는 편**입니다.\

이것은 Java의 **엄격한 객체지향 구조**와 **명시적인 접근 제어** 때문입니다.


* * * * *


**1\. Java에서 `public`, `static`이 많이 붙는 이유**

===========================================


**1.1 `public`이 많이 붙는 이유 → 엄격한 접근 제어**

--------------------------------------


> **Java는 객체지향에서 "접근 제어"를 엄격하게 적용하는 언어**입니다.


-   클래스, 메서드, 변수의 접근을 `public`, `private`, `protected` 등으로 명확히 정의해야 합니다.


🔹 **Java에서는 기본 접근 제어자가 (default) 이므로, 명확한 접근 제어를 위해 `public`을 자주 사용**합니다.


### **예제: `public` 사용**


```

public class Car { // 다른 패키지에서도 접근 가능

    public String brand; // 어디서든 접근 가능


    public void drive() { // 어디서든 호출 가능

        System.out.println(brand + " is driving!");

    }

}


```


✅ **Java에서는 접근 수준을 명확하게 설정해야 하기 때문에 `public`을 많이 사용!**\

✅ **Python, JavaScript 같은 언어는 접근 제어가 약해서 `public` 같은 키워드 없이도 가능!**


* * * * *


**1.2 `static`이 많이 붙는 이유 → 객체 생성 없이 사용하기 위해**

---------------------------------------------


> **Java에서는 메서드를 호출하려면 원칙적으로 "객체"를 생성해야 하지만, `static`을 사용하면 객체 없이 호출할 수 있음.**


-   Java는 100% 객체지향을 지향하지만, 현실적으로 **객체 없이 사용해야 하는 유틸리티 메서드**들이 존재함.

-   예를 들어, `Math` 클래스처럼 객체를 만들 필요가 없는 경우.


### **예제: `static`이 없을 때**


```

class MathUtils {

    int add(int a, int b) {

        return a + b;

    }

}


public class Main {

    public static void main(String[] args) {

        MathUtils math = new MathUtils(); // 객체 생성 필요

        System.out.println(math.add(3, 5)); // 8

    }

}


```


### **예제: `static`을 사용할 때**


```

class MathUtils {

    static int add(int a, int b) { // static 메서드

        return a + b;

    }

}


public class Main {

    public static void main(String[] args) {

        System.out.println(MathUtils.add(3, 5)); // 8 (객체 생성 불필요)

    }

}


```


✅ **`static`을 사용하면 객체 생성 없이 클래스 이름으로 바로 호출 가능!**\

✅ **유틸리티 메서드 (`Math.abs()`, `Integer.parseInt()` 등)에 자주 사용됨!**


* * * * *


**2\. Java와 다른 언어 비교 (`public`, `static`)**

-------------------------------------------


| 언어 | 접근 제어 (`public`) | 정적 메서드 (`static`) | 특징 |

| --- | --- | --- | --- |

| **Java** | `public`, `private`, `protected` | `static` 필수 사용 | 접근 제어 엄격, static 자주 사용 |

| **Python** | 없음 (`_`로 표현) | `@staticmethod` | 접근 제어 약함, static 덜 사용 |

| **C++** | `public`, `private`, `protected` | `static` | Java와 유사 |

| **JavaScript** | 없음 (모든 것이 public) | `static` (ES6 이후) | 기본적으로 `public`, ES6 이후 `static` 지원 |


✅ **Python, JavaScript 같은 언어는 `public`, `static` 없이도 사용 가능**\

✅ **Java는 엄격한 객체지향 원칙을 따르므로 `public`, `static`을 자주 사용해야 함**


* * * * *


**3\. Java에서 `public static void main`이 필수인 이유**

------------------------------------------------


```

public static void main(String[] args) {

    System.out.println("Hello, Java!");

}


```


🔹 Java의 **프로그램 실행 진입점(entry point)**\

🔹 `public`: JVM이 어디서든 호출할 수 있도록 **공개 메서드**\

🔹 `static`: 객체 없이 바로 실행할 수 있도록\

🔹 `void`: 반환값이 필요 없으므로\

🔹 `main`: Java의 **특별한 진입 메서드 이름**


**✅ `public static void main`을 반드시 사용해야 Java 프로그램이 실행 가능!**


* * * * *


**4\. 결론**

----------


1.  **Java는 `public`을 많이 사용** → **엄격한 접근 제어 때문**

2.  **Java는 `static`을 많이 사용** → **객체 없이 메서드를 호출하기 위해**

3.  **Java는 다른 언어보다 `public static`을 더 자주 사용** → **명확한 구조와 OOP를 유지하기 위해**

4.  **`public static void main`은 반드시 사용해야 프로그램 실행 가능!**


**👉 Python, JavaScript보다 Java가 더 엄격한 이유!**\

**👉 `public`, `static`을 사용하는 것이 Java 스타일!** 🚀


댓글

이 블로그의 인기 게시물

js 스트링에서 요소 갯수 세기

STUDY

javascript cheatsheet