안녕하세요! 오늘은 자바 프로그래밍에서 중요한 개념인 생성자(Constructor)에 대해 알아보겠습니다.
생성자는 클래스가 인스턴스화 될 때 객체를 초기화하는데 사용되며, 객체 지향 프로그래밍의 핵심 개념 중 하나입니다.
실생활 예시를 통해 생성자를 자세하고 쉽게 이해해봅시다.
1. 생성자(Constructor)란 무엇인가?
생성자는 클래스의 인스턴스를 생성할 때 호출되는 특별한 메소드입니다.
생성자를 사용하면 인스턴스 생성 과정에서 속성을 초기화하거나 객체에 필요한 설정 작업을 수행할 수 있습니다.
생성자의 이름은 클래스 이름과 동일하며, 반환 타입을 명시하지 않습니다.
예시: 학생 클래스 생성하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class Student {
// 속성 (멤버 변수)
String name;
int age;
String major;
// 생성자
public Student(String name, int age, String major) {
this.name = name;
this.age = age;
this.major = major;
}
// 행동 (메소드)
void introduce() {
System.out.println("Hi, my name is " + name + ", I'm " + age + " years old and my major is " + major + ".");
}
}
|
cs |
위의 예시에서는 학생을 나타내는 Student 클래스를 생성했습니다. 이 클래스는 학생의 이름(name), 나이(age), 전공(major) 등의 속성을 갖고 있으며, 학생을 소개하는(introduce) 행동을 정의하고 있습니다. 또한 생성자를 사용하여 인스턴스 생성 시 속성을 초기화하도록 설정했습니다.
2. 생성자를 사용하여 인스턴스 생성하기
생성자를 정의한 후에는 이를 사용하여 인스턴스를 생성하고 속성을 초기화할 수 있습니다.
예시: 학생 클래스를 이용해 인스턴스 생성하기
1
2
3
4
5
6
7
8
9
|
public static void main(String[] args) {
// 인스턴스 생성 및 속성 초기화
Student student1 = new Student("Alice", 20, "Computer Science");
Student student2 = new Student("Bob", 22, "Mathematics");
// 행동 수행
student1.introduce();
student2.introduce();
}
|
cs |
위의 코드에서는 Student 클래스를 바탕으로 두 개의 서로 다른 인스턴스(student1, student2)를 생성했습니다. 생성자를 사용하여 인스턴스 생성과 동시에 속성을 초기화했습니다. 이렇게 생성자를 사용하면 인스턴스 생성과 속성 초기화를 동시에 처리할 수 있어 코드가 간결해집니다.
3, 생성자 오버로딩(Constructor Overloading)
생성자 오버로딩은 하나의 클래스에 여러 개의 생성자를 정의하는 것입니다.
생성자 오버로딩을 사용하면 인스턴스 생성 시 다양한 방법으로 속성을 초기화할 수 있습니다.
예시: 학생 클래스에 생성자 오버로딩 적용하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class Student {
// 속성 (멤버 변수)
String name;
int age;
String major;
// 생성자 1
public Student(String name, int age, String major) {
this.name = name;
this.age = age;
this.major = major;
}
// 생성자 2 (기본 생성자)
public Student() {
this.name = "Unknown";
this.age = 0;
this.major = "Unknown";
}
// 행동 (메소드)
void introduce() {
System.out.println("Hi, my name is " + name + ", I'm " + age + " years old and my major is " + major + ".");
}
}
|
cs |
위의 예시에서는 학생 클래스에 두 개의 생성자를 정의했습니다. 첫 번째 생성자는 이름, 나이, 전공을 매개변수로 받아 초기화하며, 두 번째 생성자는 기본 생성자로, 매개변수를 받지 않고 기본값으로 초기화합니다.
예시: 생성자 오버로딩을 사용하여 인스턴스 생성하기
1
2
3
4
5
6
7
8
9
10
|
public static void main(String[] args) {
// 인스턴스 생성 및 속성 초기화 (생성자 1 사용)
Student student1 = new Student("Alice", 20, "Computer Science");
// 인스턴스 생성 및 기본값으로 속성 초기화 (생성자 2 사용)
Student student2 = new Student();
// 행동 수행
student1.introduce();
student2.introduce();
}
|
cs |
이 예시에서는 생성자 오버로딩을 사용하여 student1 인스턴스는 매개변수를 전달하여 속성을 초기화하고, student2 인스턴스는 기본 생성자를 사용하여 기본값으로 초기화했습니다.
4. 기본 생성자(디폴트 생성자)
기본 생성자는 매개변수가 없는 생성자를 말합니다.
기본 생성자는 클래스 내에서 명시적으로 정의되어 있지 않은 경우, 컴파일러가 자동으로 생성해줍니다.
기본 생성자를 사용하면 속성을 초기화하지 않거나 기본값으로 초기화할 수 있습니다.
예시: 기본 생성자를 사용한 학생 클래스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class Student {
// 속성 (멤버 변수)
String name;
int age;
String major;
// 기본 생성자 (디폴트 생성자)
public Student() {
this.name = "Unknown";
this.age = 0;
this.major = "Unknown";
}
// 행동 (메소드)
void introduce() {
System.out.println("Hi, my name is " + name + ", I'm " + age + " years old and my major is " + major + ".");
}
}
|
cs |
위의 예시에서는 기본 생성자를 사용하여 학생 클래스의 속성을 기본값으로 초기화했습니다. 기본 생성자를 사용할 때는 생성자의 매개변수를 비워두어야 합니다.
예시: 기본 생성자를 사용하여 인스턴스 생성하기
1
2
3
4
5
6
7
|
public static void main(String[] args) {
// 인스턴스 생성 및 기본값으로 속성 초기화 (기본 생성자 사용)
Student student = new Student();
// 행동 수행
student.introduce();
}
|
cs |
이 예시에서는 기본 생성자를 사용하여 인스턴스를 생성하고, 속성을 기본값으로 초기화했습니다. 이렇게 기본 생성자를 사용하면 클래스의 사용자가 속성을 초기화하지 않아도 인스턴스를 생성할 수 있습니다.
이상으로 생성자에 대한 설명을 마칩니다.
생성자를 이해하고 사용하는 것은 객체 지향 프로그래밍의 핵심이므로, 이를 기반으로 자바 프로그래밍 능력을 향상시킬 수 있을 것입니다.
'[JAVA] > ┃ⓑ KEYWORDS' 카테고리의 다른 글
[JAVA] 캡슐화(Encapsulation) (0) | 2023.03.18 |
---|---|
[JAVA] this (0) | 2023.03.18 |
[JAVA] 인스턴스 (Instance) (0) | 2023.03.18 |
[JAVA] 메서드(method) (0) | 2023.03.18 |
[JAVA] 클래스(Class) (0) | 2023.03.17 |