2025-03-04
생성자(Constructor) 는 객체가 생성될 때 자동으로 호출되는 특수한 메서드이다.
void
도 작성하지 않음!)class Person {
String name;
int age;
// 디폴트 생성자 (매개변수 없음)
Person() {
System.out.println("Person() 생성자 호출!");
this.name = "이름 없음";
this.age = 0;
}
}
public class Main {
public static void main(String[] args) {
Person p = new Person(); // 디폴트 생성자 호출
System.out.println("이름: " + p.name + ", 나이: " + p.age);
}
}
Person() 생성자 호출!
이름: 이름 없음, 나이: 0
class Car {
String model;
int year;
// 생성자 1 (디폴트 생성자)
Car() {
this.model = "기본 모델";
this.year = 2020;
}
// 생성자 2 (매개변수 1개)
Car(String model) {
this.model = model;
this.year = 2022;
}
// 생성자 3 (매개변수 2개)
Car(String model, int year) {
this.model = model;
this.year = year;
}
void showInfo() {
System.out.println("모델: " + model + ", 연식: " + year);
}
}
public class Main {
public static void main(String[] args) {
Car car1 = new Car();
Car car2 = new Car("Tesla");
Car car3 = new Car("BMW", 2023);
car1.showInfo();
car2.showInfo();
car3.showInfo();
}
}
모델: 기본 모델, 연식: 2020
모델: Tesla, 연식: 2022
모델: BMW, 연식: 2023
메서드 오버로딩은 같은 이름의 메서드를 매개변수의 개수나 타입에 따라 다르게 정의하는 기법이다.
class OverloadingExample {
// 2개의 정수를 더하는 메서드
int sum(int x, int y) {
return x + y;
}
// 3개의 정수를 더하는 메서드
int sum(int x, int y, int z) {
return x + y + z;
}
// 3개의 실수를 더하는 메서드 (double 타입)
double sum(double x, double y, double z) {
return x + y + z;
}
}
public class Main {
public static void main(String[] args) {
OverloadingExample obj = new OverloadingExample();
System.out.println("sum(10, 20) 결과: " + obj.sum(10, 20));
System.out.println("sum(10, 20, 30) 결과: " + obj.sum(10, 20, 30));
System.out.println("sum(10.5, 20.5, 30.5) 결과: " + obj.sum(10.5, 20.5, 30.5));
}
}
sum(10, 20) 결과: 30
sum(10, 20, 30) 결과: 60
sum(10.5, 20.5, 30.5) 결과: 61.5
가변인자(Varargs) 는 매개변수 개수가 정해지지 않은 경우 사용한다.
int... arg
→ arg
는 배열처럼 동작함 (int[] arg
와 동일)import java.util.Arrays;
class VarargsExample {
int sum(int... numbers) {
System.out.println("입력된 값: " + Arrays.toString(numbers)); // 가변인자 배열 출력
int result = 0;
for (int num : numbers) {
result += num;
}
return result;
}
}
public class Main {
public static void main(String[] args) {
VarargsExample obj = new VarargsExample();
System.out.println("결과: " + obj.sum(10, 20, 30, 40, 50));
System.out.println("결과: " + obj.sum(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110));
}
}
✅ 생성자는 객체가 생성될 때 한 번만 호출되며, 객체 초기화를 수행한다.
✅ 디폴트 생성자는 클래스 내에 생성자를 명시하지 않으면 자동으로 추가된다.
✅ 생성자 오버로딩을 사용하면 다양한 방식으로 객체를 생성할 수 있다.
✅ 메서드 오버로딩은 같은 이름의 메서드를 여러 개 정의할 수 있도록 해준다.
✅ 가변인자는 int... numbers
와 같이 선언하여 매개변수 개수를 유연하게 처리 가능하다.
✅ 가변인자는 항상 마지막 매개변수로 선언해야 한다.