객체의 구성 멤버

 

 

🔯  생성자 (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