profile image

L o a d i n g . . .

article thumbnail image
Published 2022. 7. 5. 07:09

생성자?

- new 연산자로 호출되는 중괄호{}블록.

- new 연산자로 클래스로부터 heap영역에 객체를 생성할 때 호출되어 객체의 초기화를 담당

 

 

기본 생성자

- 모든 클래스는 생성자가 반드시 존재하며, 생성자를 하나 이상 가질 수 있다. 우리가 클래스 내부에 생성자 선언을 생략해도 컴파일러가 아래와 같은 기본생성자를 바이트코드에 자동 추가한다

[public] 클래스() {}

 

 

명시적 생성자 선언

- 기본 생성자 대신 명시적으로 선언

클래스(매개변수){
	//객체 초기화 코드
}

Car 클래스처럼 생성자가 명시적으로 선언되어 있을 경우에는 반드시 선언된 생성자를 호출해서 객체를 생성해야한다.

 

 

 

package a220705;

public class CarEx {
	public static void main(String[] args) {
		Car myCar = new Car("검정", 3000);
		//기본생성자를 호출 할 수 x
	}
}

Car 클래스에 생성자 선언이 있었기 때문에 new Car() 와 같은 기본생성자 호출 불가

 

 

 

 

 

 

필드 초기화

클래스로부터 객체가 생성될 때 필드는 기본  초기값으로 자동 설정된다.

 

만약 다른 값으로  초기화 하고싶다면 필드를 선언할 때 초기값을 주거나, 생성자에서 초기값을 주는 방법이 있다.

 

package a220705;

public class Korean {
	//nation필드에 초기값 부여
	String nation = "대한민국";
	String name;
	String ssn;
	
	public Korean(String name, String ssn) {
		this.name = name;
		this.ssn = ssn;
	}
}
package a220705;

public class KoreanEx {
	public static void main(String[] args) {
		Korean k1 = new Korean("박자바", "011225-1234567");
		System.out.println("k1.nation: " +  k1.nation);
		System.out.println("k1.name: " +  k1.name);
		System.out.println("k1.ssn: " +  k1.ssn);
		
		Korean k2 = new Korean("최자바", "911225-2234567");
		System.out.println("k2.name: " +  k2.name);
		System.out.println("k2.ssn: " +  k2.ssn);
		
	}
}

 

 

 

 

 

 

생성자 오버로딩

오버로딩?

매개변수를 달리하는 생성자를 여러 개 선언하는 것

public class Car{
	car(){...}
	car(String model){...}
    car(String model, String color) {...}
    car(String model, String color, int maxSpeed) {...}
 
}

 

package a220705;

public class Car {
	String company = "Hyundai";
	String model;
	String color;
	int maxSpeed;
	int cc;
	
	Car(){}
	
	Car(String model){
		this.model = model;
	}
	
	Car(String model, String color){
		this.model = model;
		this.color = color;
	}
	
	Car(String model, String color, int maxSpeed){
		this.model = model;
		this.color = color;
		this.maxSpeed = maxSpeed;
	}

	Car(String color, int cc){	}
}
		Car car1 = new Car();
		System.out.println(car1.company);
		
		Car car2 = new Car("자가용");
		System.out.println(car2.model);
		
		Car car3 = new Car("택시", "검정");
		System.out.println(car3.model + " " + car3.color);

\

 

 

참고 :

- 혼자 공부하는 자바(신용권), 한빛미디어

 

반응형

'개발 > JAVA' 카테고리의 다른 글

[Java] 인스턴스 멤버와 정적 멤버  (0) 2022.07.07
[Java] 메소드  (0) 2022.07.06
[Java] 필드(field)  (0) 2022.07.04
[Java] 객체 지향 프로그래밍 (OOP)  (0) 2022.07.01
[Java] 열거타입(enum)  (0) 2022.06.29
복사했습니다!