노승현
생성자란? 본문
자바(Java)에서 생성자(Constructor)는 객체를 생성할 때 호출되는 특별한 메서드입니다. 생성자는 클래스의 인스턴스를 초기화하고 객체의 상태를 설정하는 역할을 합니다. 일반적으로 클래스 이름과 동일하며, 반환 값이 없습니다.
생성자의 호출 위치
일반 메서드들과는 다르게, 생성자는 호출할 수 있는 곳이 정해져 있습니다.
생성자는 클래스를 기반으로 객체를 생성할 때, 객체의 초기화를 담당하는 역할을 하므로 객체를 생성할 때만 호출할 수 있습니다.
생성자 호출 방법
생성자를 호출할 때는 new 키워드를 함께 사용합니다.
클래스명 객체명 = new 클래스명();
기본 생성자
자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 합니다. 클래스를 생성하면서 개발자가 직접 생성자를 선언하지 않았지만, 자바 컴파일러가 기본 생성자를 자동으로 제공해 줍니다. 다만, 컴파일러의 눈에만 보일 뿐 우리가 보는 코드에는 생략되어 있습니다.
public class MyClass {
private int myVariable;
// 기본 생성자
public MyClass() {
// 객체를 초기화하거나 기본 상태로 설정하는 코드
myVariable = 0;
}
}
생성자 선언 이유
생성자는 객체를 생성함과 동시에 객체를 초기화할 수 있습니다. 생성자를 통해 객체를 초기화한다는 것은 필드와 메서드를 호출하는 등
객체를 사용하기 위해 객체를 메모리에 올린다는 의미가 있습니다.
우리는 생성자를 통해서 객체를 메모리에 올림과 동시에, 더 나아가 객체 멤버에 접근이 가능하므로 일반 메서드처럼 객체 멤버의 데이터를 초기화할 수 있습니다. 우리는 이러한 이유로 직접 생서자를 선언하여 사용합니다.
메소드를 호출하면서 매개변수를 통해 값을 전달했던 것처럼, 생성자 역시 매개변수를 통해 값을 전달할 수 있습니다.
생성자 오버로딩
오버로딩
메소드 오버로딩(Method Overloading)은 자바에서 하나의 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 기법을 말합니다. 오버로딩은 메소드의 이름은 같지만 매개변수의 타입, 개수, 또는 순서가 다른 여러 메소드를 정의하여 다양한 상황에서 동일한 이름의 메소드를 사용할 수 있도록 합니다.
오버로딩은 다음과 같은 특징을 가집니다:
- 메소드 이름이 동일해야 합니다: 오버로딩된 메소드들은 이름이 동일해야 합니다.
- 매개변수의 타입, 개수, 순서가 달라야 합니다: 오버로딩된 메소드들은 매개변수의 타입, 개수, 또는 순서가 서로 달라야 합니다.
- 반환 타입은 오버로딩에 영향을 주지 않습니다: 반환 타입이 다르더라도 오버로딩이 가능합니다.
public class OverloadingExample {
// 정수 두 개를 더하는 메소드
public int add(int a, int b) {
return a + b;
}
// 실수 두 개를 더하는 메소드
public double add(double a, double b) {
return a + b;
}
// 문자열 두 개를 연결하는 메소드
public String add(String a, String b) {
return a + b;
}
}
this:
- this는 현재 객체를 나타내는 참조 변수입니다.
- 클래스 내부에서 인스턴스 변수와 메소드를 참조할 때 사용됩니다.
- 메소드 내에서 로컬 변수와 멤버 변수의 이름이 같을 때, this를 사용하여 멤버 변수를 구별합니다.
public class MyClass {
private int myVariable;
public void setMyVariable(int myVariable) {
// 로컬 변수와 멤버 변수 이름이 같을 때 this를 사용하여 멤버 변수를 지칭
this.myVariable = myVariable;
}
}
this():
- this()는 같은 클래스 내의 다른 생성자를 호출하는 데 사용됩니다. 즉, 한 생성자에서 다른 생성자를 호출할 때 사용합니다.
- 생성자 오버로딩이나 생성자에서 초기화 코드를 공통으로 묶을 때 편리하게 사용할 수 있습니다.
public class MyClass {
private int myVariable;
// 기본 생성자
public MyClass() {
this(0); // 다른 생성자를 호출하여 초기화
}
// 매개변수를 받는 생성자
public MyClass(int myVariable) {
this.myVariable = myVariable;
}
}
'JAVA > Mentor JAVA' 카테고리의 다른 글
다형성과 타입 변화 (0) | 2024.01.06 |
---|---|
상속이란? (0) | 2024.01.02 |
메서드란? (0) | 2023.12.28 |
클래스 (0) | 2023.12.25 |
배열이란? (0) | 2023.12.24 |