🔯 생성자 (Constructor)
✔ 생성자란?
- 객체가 new연산자에 의해 인스턴스화되어 객체를 생성할 때 객체의 레퍼런스를 생성하기 전에 객체의 초기화를 위해 - 사용되는 코드블록이다
- 객체 한에서 만들어지는 필드 초기화된다
생성자는 일종의 메소드로 전달된 초기값을 받아서 객체의 필드에 기록한다
- 생성자는 자바 클래스의 멤버가 아니며, 멤버가 아니므로 상속되지 않는다. 따라서, 오버라이딩의 대상이 될 수도 없다
- 일반적인 메소드 호출방법으로 호출할 수 없다
✔ 생성자 규칙
- 생성자의 이름은 반드시 클래스의 이름과 같아야 한다
- 생성자는 리턴값이 없다
- 생성자도 오버로딩이 가능하므로 하나의 클래스에 여러가지의 생성자가 있을 수 있다
- 모든 생성자는 무조건 리턴값이 없으므로 void를 생략한다
- 접근 제한 수식어인 public, protected, private 만을 쓸 수 있다
⭐ 생성자 표현식
종류 | 쓰는 방법 | 예시 |
기본 생성자 | [접근제한자] 클래스 ( ) { } |
public Number01 ( ) { } |
매개변수가 있는 생성자 | [접근제한자] 클래스 (매개변수) { this.필드변수 = 매개변수; } |
public Number01 (String a) { this.a = a; } |
생성자들은 다음과 같은 new 표현식을 통하여 객체의 생성과 함께 실행된다.
Example ex = new Example(); |
🔯 매개변수와 오버로딩 (Overloding)
✔ 기본 생성자
작성하지 않은 경우, 클래스 사용시 JVM (자바가상머신)이 자동으로 기본 생성자 생성
✔ 매개변수가 있는 생성자
- 객체 생성 시 전달받은 값으로 객체를 초기화 하기 위해 사용
- 매개변수 생성자 작성 시 JVM이 기본 생성자를 자동으로 생성해주지 않음
- 상속에서 사용 시 반드시 기본 생성자를 작성
- 당연한거지만 오버로딩을 이용하여 작성
▶ 예시문
더보기
✔ 기본생성자
public class Number01{
public Number01(){
System.out.println("생성자 호출 성공");
}
public static void main(String[] args){
Number01 ce = new Number01(); // 인스턴스 생성 및 생성자 호출
}
}
생성자 호출 성공
✔오버로딩 ex1)
public class Number01 {
public Number01(){ // 기본 생성자
System.out.println("생성자 호출 성공(기본)");
}
public Number01(String a){ // 생성자 오버로딩 / a = "사용자 정의"
System.out.println(a + " 생성자 호출 성공(매개변수)");
}
public static void main(String[] args) {
Number01 nb2 = new Number01(); // 기본 생성자 호출
Number01 nb = new Number01("사용자 정의"); // 매개변수를 갖는 생성자 호출
}
}
생성자 호출 성공(기본)
사용자 정의 생성자 호출 성공(매개변수)
✔오버로딩 ex2)
class Number02 {
// 필드변수 선언과 초기화
int a = 10;
int b = 20;
public Number02() { // 기본 생성자
}
public Number02(int num1, int num2) { // 0, 10 생성자 오버로딩
// 매개값 이용 필드변수 초기화
a = num1; //0
b = num2; //10
}
public void sum() { // 메소드
System.out.println("합계 : " + (a + b));
}
}
public class Number02_Run {
public static void main(String[] args) {
Number02 nb2= new Number02(); // a=10, b=20, int b = 20
nb2.sum(); // 결과 : 30
Number02 nb1= new Number02(0, 10); // int num1, int num2
nb1.sum(); // 결과 : 10
}
}
합계 : 30
합계 : 10
'Language > Java' 카테고리의 다른 글
객체 배열 (0) | 2022.01.04 |
---|---|
Class - 메소드 (Method) (0) | 2022.01.04 |
Class - 필드(변수) (0) | 2022.01.03 |
package와 import (0) | 2022.01.02 |
클래스, 객체, 인스턴스 개념 (0) | 2022.01.02 |