🧠 Java 복습 정리 (메소드 · 생성자)
⚙️ [ 메소드 (Method) ]
| 항목 | 설명 |
|---|
| 📘 정의 | 하나의 기능을 수행하는 명령어(코드) 집합 |
| 📦 역할 | 속성 → 데이터 저장 / 메소드 → 기능(명령어) 저장 |
🔹 [ 주요 용어 ]
| 용어 | 설명 | 예시 |
|---|
| 인수 (Argument) | 메소드 호출 시 전달되는 값 | obj.method(인수1, 인수2) |
| 매개변수 (Parameter) | 인수를 전달받는 변수 | void method(int x, int y) |
| 반환값 (Return Value) | 메소드 종료 시 반환되는 값 | return result; |
| 반환타입 (Return Type) | 반환값의 자료형 | int method() { return 5; } |
💡 주의할 점
- 인수와 매개변수는 타입이 일치해야 함
- 매개변수는 없을 수도 있음
- 반환값은 항상 1개만 가능
- 반환값이 없을 때는 void 사용
🧱 [ 메소드 선언 & 호출 ]
선언 방법
반환타입 메소드명(타입 매개변수1, 타입 매개변수2) {
실행코드;
return 반환값;
}
호출 방법
| 상황 | 방법 |
|---|
| 다른 클래스의 메소드 호출 | 클래스명 객체 = new 클래스명(); → 객체.메소드명(인수); |
| 같은 클래스의 메소드 호출 | 메소드명(인수); |
🚀 [ 생성자 (Constructor) ]
| 항목 | 설명 |
|---|
| 📘 정의 | 객체 생성 시 초기화 담당 함수 |
| 💡 특징 | 반환값이 없으며, 클래스명과 동일한 이름을 가짐 |
| 🧩 사용법 | 클래스명 변수명 = new 생성자명(); |
🧱 [ 생성자 규칙 ]
| 규칙 | 설명 |
|---|
| 1️⃣ | 클래스명과 동일해야 함 (다르면 메소드로 인식됨) |
| 2️⃣ | 반환타입이 없음 |
| 3️⃣ | 오버로드 가능 (매개변수의 개수·타입·순서가 다를 때) |
🔁 오버로드 (Overload)
동일한 이름의 생성자/메소드를 여러 개 선언하여 다양한 초기화 방식 제공.
🧩 [ 생성자 종류 ]
| 종류 | 설명 | 예시 |
|---|
| 기본 생성자 | 매개변수가 없으며, 생성자가 없을 시 자동 추가 | public ClassName() {} |
| 매개변수가 있는 생성자 | 인수로 초기값을 전달받아 멤버변수를 초기화 | public ClassName(String name, int age) {} |
💡 주의
- 다른 생성자가 존재하면 기본 생성자를 직접 정의해야 함
- 객체 생성 시
new 키워드와 함께 반드시 호출됨
🧩 [ 생성자의 목적 ]
| 항목 | 설명 |
|---|
| ⚡ 빠른 초기화 | 객체 생성 시 멤버변수 초기화 |
| 🔒 보안성 향상 | private 멤버 초기화 시 안정적인 접근 제공 |
| 🤝 협업 효율 | 규칙적인 객체 생성으로 유지보수 용이 |
⚠️ [ 유의사항 ]
1️⃣ 클래스 내 멤버변수와 매개변수 이름이 동일하면?
this.model = model;
this : 현재 객체 자신을 가리킴
model = model; 은 불가능함 → 반드시 this 사용
- 협업 시 가독성을 위해 멤버변수와 매개변수 이름을 동일하게 설정하는 것이 관례
2️⃣ 여러 기능이 존재할 때?
- 유지보수와 협업을 위해 역할별 클래스로 분리
- 즉, 각 클래스는 하나의 책임만 담당 (단일책임원칙)
🧱 [ 생성자 자동 생성 단축키 ]
💡 IntelliJ / Eclipse 공통 기능
1️⃣ 코드 파일 내 빈 공간 우클릭
2️⃣ "생성 → 생성자" 선택
3️⃣ 초기화할 멤버변수 선택 후 확인
🧩 [ 예제 코드 ]
class Car {
String model;
int year;
public Car() {}
public Car(String model, int year) {
this.model = model;
this.year = year;
}
public void info() {
System.out.println("모델: " + model + ", 연식: " + year);
}
}
Car car1 = new Car("쏘나타", 2023);
car1.info();