1. 📦 접근 제어 (Access Control)
클래스의 멤버 접근 범위를 설정해서 데이터 은닉과 캡슐화를 구현.
❗️목적: 클래스 내부 구현은 감추고, 필요한 메서드만 공개함으로써 안정성과 유연성 확보
2. 📤 객체를 메서드에 전달하고 반환
✅ 전달
void process(Car c) { ... }
- 객체 참조가 전달됨 → 실제 객체를 수정 가능
- Java는 참조를 값으로 전달(call-by-value of reference)
✅ 반환
Car makeCar() {
return new Car();
}
- 메서드에서 객체를 만들어 반환할 수 있다
- 반환된 객체는 가비지 컬렉터가 회수할 때까지 유효함
3. ♻️ 메서드 오버로딩 (Overloading)
같은 이름의 메서드를 매개변수 구성만 다르게 정의 가능
int sum(int a, int b)
double sum(double a, double b)

➕ 오버로딩은 **다형성(polymorphism)**의 한 형태
4. 🧱 생성자 오버로딩
class Box {
Box() { ... }
Box(int w, int h) { ... }
}
- 객체 초기화 방법을 다양하게 제공할 수 있음
5. 🔁 재귀 메서드 (Recursion)
메서드가 자기 자신을 호출. 종료 조건 반드시 필요.
int factorial(int n) {
if (n==1) return 1;
return n * factorial(n-1);
}
- 재귀 호출은 반복문과 동일한 효과지만, 코드를 간결하게 표현 가능
- 너무 깊어지면 스택 오버플로우 위험
6. 🧊 static 키워드
✅ static 변수/메서드는 클래스 단위로 존재
class MyClass {
static int count = 0;
static void printCount() { ... }
}
7. 🔒 static 블록
클래스가 로드될 때 단 1회 실행되는 초기화 블록
static {
System.out.println("클래스 최초 로딩 시 실행");
}
8. 🧩 내부 클래스 (Inner Class)
클래스 안에 또 다른 클래스를 정의할 수 있음
class Outer {
class Inner {
void display() { ... }
}
}

실전에서는 내부 클래스가 한 클래스에서만 쓰이는 유틸성 구조일 때 유용
9. 📦 가변인자 (Varargs)
매개변수의 개수가 가변적인 경우 `...` 문법 사용
void printAll(String... words) {
for (String w : words) System.out.println(w);
}
- 내부적으로 배열로 처리됨
- 반드시 마지막 매개변수여야 함 (안그럼 컴파일러가 어디까지 가변인자인지 모르기 때문)
void print(String... args, int id) { } // ❌ 컴파일 오류
'언어 > Java' 카테고리의 다른 글
5. More Data Types and Operators (0) | 2025.05.01 |
---|---|
4. Classes, Objects, and Methods (0) | 2025.05.01 |
3: Program Control Statements (0) | 2025.04.28 |
2장: 데이터 타입과 연산자 (1) | 2025.04.28 |
1장 Java Fundamentals (0) | 2025.04.28 |