안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
생성자 오버로딩이란 매개 변수를 달리하는 생성자를 여러개 선언하는 것을 말합니다.
http://blog.naver.com/rain483/220514884383
예제)
public class Car {
//필드
String company = "현대자동차";
String model;
String color;
int maxSpeed;
//생성자
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;
}
}
예제2)
public class CarExample {
public static void main(String[] args) {
Car car1 = new Car();
System.out.println("car1.company : " + car1.company);
System.out.println();
Car car2 = new Car("자가용");
System.out.println("car2.company : " + car2.company);
System.out.println("car2.model : " + car2.model);
System.out.println();
Car car3 = new Car("자가용", "빨강");
System.out.println("car3.company : " + car3.company);
System.out.println("car3.model : " + car3.model);
System.out.println("car3.color : " + car3.color);
System.out.println();
Car car4 = new Car("택시", "검정", 200);
System.out.println("car4.company : " + car4.company);
System.out.println("car4.model : " + car4.model);
System.out.println("car4.color : " + car4.color);
System.out.println("car4.maxSpeed : " + car4.maxSpeed);
}
}
다른 생성자 호출(this())
생성자 오버로딩이 많아질 경우 생성자 간의 중복된 코드가 발생할 수 있습니다.
매개 변수의 수만 달리하는 필드 초기화 내용이 비슷한 생성자에서 이러한 현상을 많이 볼 수 있습니다.
이 경우에는 필드 초기화 내용은 한 생성자에만 집중적으로 작성하고
나머지 생성자는 초기화 내용을 가지고 있는 생성자를 호출하는 방법으로 개선할 수 있습니다.
생성자에서 다른 생성자를 호출할 때는 this()코드를 사용합니다.
클래스([매개변수선언,...]) {
this(매개변수, '...,값,...); 클래스의 다른 생성자 호출
실행문;
}
this() 는 자신의 다른 생성자를 호출하는 코드로 반드시 생성자의 첫줄에서만 허용됩니다.
this()의 매개값은 호출되는 생성자의 매개 변수 타입에 맞게 제공해야 합니다.
Car(String model) {
this.model = model;
this.color = "은색";
this.maxSpeed = 250;
}
Car(String model, String color) {
this.model = model;
this.color = color;
this.maxSpeed = 250;
}
Car(String model, String color, int maxSpeed) {
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed;
}
위 코드의 중복을 제거하는 예제를 보겠습니다.
중복 코드 제거 예제)
예제1)
public class Car {
//필드
String company = "현대자동차";
String model;
String color;
int maxSpeed;
//생성자
Car() {
}
Car(String model) {
this(model, "은색", 250);
}
Car(String model, String color) {
this(model, color, 250);
}
Car(String model, String color, int maxSpeed) { // 공통 실행 코드
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed;
}
}
예제2)
public class CarExample {
public static void main(String[] args) {
Car car1 = new Car();
System.out.println("car1.company : " + car1.company);
System.out.println();
Car car2 = new Car("자가용");
System.out.println("car2.company : " + car2.company);
System.out.println("car2.model : " + car2.model);
System.out.println();
Car car3 = new Car("자가용", "빨강");
System.out.println("car3.company : " + car3.company);
System.out.println("car3.model : " + car3.model);
System.out.println("car3.color : " + car3.color);
System.out.println();
Car car4 = new Car("택시", "검정", 200);
System.out.println("car4.company : " + car4.company);
System.out.println("car4.model : " + car4.model);
System.out.println("car4.color : " + car4.color);
System.out.println("car4.maxSpeed : " + car4.maxSpeed);
}
}
'자바' 카테고리의 다른 글
JAVA 자바 메서드 - 리턴문 , 리턴값이 있는 메서드, 리턴값이 없는 메서드 (0) | 2017.03.12 |
---|---|
JAVA 자바 메소드 - 메소드 선언 (0) | 2017.03.12 |
JAVA 자바 클래스 기본 생성자 , 생성자 선언, 필드 초기화 (0) | 2017.03.12 |
JAVA 자바 클래스의 필드 (0) | 2017.03.12 |
JAVA 자바 클래스 구성 멤버 - 필드, 생성자, 메서드 (0) | 2017.03.12 |