함수는 특정 작업을 수행하는 코드 블록입니다. 반복되는 코드를 하나로 묶어 관리하면 가독성이 좋아지고 유지보수가 쉬워집니다.
return 구문은 반환 타입이 void인 경우 생략할 수 있습니다.관련 있는 변수(필드)와 함수(메서드)를 하나로 묶은 사용자 정의 자료형입니다. 흔히 객체를 만들기 위한 설계도(Blueprint) 또는 붕어빵 틀에 비유합니다.
클래스라는 설계도를 바탕으로 메모리에 실제 생성된 결과물입니다. (예: 붕어빵 틀에서 구워져 나온 붕어빵)
| 구분 | 선언 위치 | 생성 시점 | 특징 |
|---|---|---|---|
| 클래스 변수 | 필드 (static 키워드) | 클래스 로드 시 | 모든 인스턴스가 공유함 |
| 인스턴스 변수 | 필드 (키워드 없음) | 인스턴스 생성 시 | 각 인스턴스마다 별도 존재 |
| 지역 변수 | 메서드/생성자 내부 | 블록 실행 시 | 블록 종료 시 소멸 |
이름은 같지만 매개변수의 개수, 타입, 순서가 다른 메서드를 여러 개 정의하는 것입니다.
⚠️ 주의: 반환 타입(Return Type)만 다르거나 매개변수 이름만 다른 것은 오버로딩으로 인정되지 않습니다!
생성자는 객체가 만들어질 때 반드시 호출되는 도구입니다.
this.: 필드와 매개변수의 이름이 같을 때 인스턴스 자신을 가리키기 위해 사용합니다.this(): 같은 클래스 내의 다른 생성자를 호출할 때 사용하며, 반드시 첫 번째 줄에 위치해야 합니다.공부하면서 가장 헷갈렸던 부분들을 정리했습니다.
Q1. 생성자에 void를 붙이면 왜 안 되나요?
A: Java에서 생성자는 반환 타입이 없어야 합니다. 만약 public void Movie()라고 쓰면, 컴파일러는 이를 생성자가 아닌 일반 메서드로 인식합니다. 결국 new Movie()를 호출했을 때 호출할 생성자가 없어 에러가 발생합니다.
Q2. 매개변수 생성자를 만들었는데 기본 생성자가 안 만들어져요.
A: 개발자가 생성자를 하나도 안 쓰면 컴파일러가 '기본 생성자'를 자동으로 넣어주지만, 매개변수 생성자를 하나라도 만드는 순간 자동으로 넣어주지 않습니다. 따라서 습관적으로 기본 생성자를 함께 선언해 주는 것이 좋습니다.
Q3. 가변인자(int... nums) 사용 시 주의점은?
A: 가변인자는 항상 매개변수의 마지막 위치에 딱 하나만 올 수 있습니다. 내부적으로는 배열처럼 동작합니다.
객체지향의 핵심은 A PIE로 기억하면 쉽습니다!