생성자,메소드에서 매개값으로 받은 인스턴스를 해당 클래스 필드 변수에 대입하여 초기화 하는 방법에 대해서
몇 주전에 다뤄본적이 있다,
this.매개변수 = 필드변수;
하지만 해당 개념만 숙지한뒤 모든것을 아는 것 처럼 넘어 갔지만 this클래스의 기능을 간과하고 있었던것 같다..
오늘은 간과했던 this의 또 다른 기능에 대해서 포스팅 해볼려고 한다.
메소드가 오버로딩이 가능하듯이 생성자또한 오버로딩이 가능하다,
이때 생성자 오버로딩이 많아질 경우 생성자 간의 중복된 코드가 발생할 수 있다.
매개 변수의 수만 달리 하고 필드 초기화 내용이 비슷한 생성자에서 이러한 현상을 많이 볼 수 있다
이 경우에 필드 초기화를 담당하는 기능은 한 생성자에만 집중적으로 작성하고 나머지 생성자는 초기화 내용을 가지고 있는 생성자를 호출하는 방법으로 개선할 수 있다.
필드 초기화를 담당하는 생성자가 사용하는 것이 바로 this() 클래스이다.
public class Car{
public Car(){ // 초기화를 담당하는 생성자또한 매개변수를 입력하여 호출이 가능하다.
this(매개변수 값); // 매개변수 값이 여러값일떄 , 를 사용한다.
실행문 // 초기화 기능을 마친후 뒤에 붙는 실행문을 동작시킨다.
}
}
* this()는 무조건 생성자의 첫줄에 작성되어야 한다.
* 호출되는 생성자의 실행이 끝나면 원래 생성자로 돌아와서 다음 실행문을 진행한다.
그렇다면 클래스 상속관계에서 this()클래스를 사용한 생성자 실행순서를 알아보자
// 부모 클래스
public class Car{
public String name;
public Car(){
this("조재영");
System.out.println("Car 기본 생성자 입니다.");
}
public Car(String name){
this.name = name;
System.out.println("Car 호출된 생성자 입니다.");
}
}
// 자식 클래스
public class Tire extends Car {
public int age;
public Tire(){
this(24);
System.out.println("Tire 기본 생성자 입니다.");
}
public Tire(int age){
this.age = age;
System.out.println("Tire 호출 생성자 입니다. ");
}
}
// main 클래스
public class Main {
public static void main(String[] args){
Tire t1 = new Tire();
}
}
생성자 실행순서
1. 부모 클래스 기본 생성자
2. 부모 클래스 호출 생성자
3. 자식 클래스 기본 생성자
4. 자식 클래스 호출 생성자
'JAVA' 카테고리의 다른 글
JAVA ) interface의 역할과 선언방법 (코드) (0) | 2020.05.27 |
---|---|
JAVA ) interface의 역할과 선언방법 (개념) (0) | 2020.05.27 |
JAVA ) 추상 클래스와 추상 메소드 (1) | 2020.05.19 |
JAVA 필드의 다향성 ( 예제 프로그램 작성 (0) | 2020.05.13 |
JAVA 상속관계 자동 타입 변환과 다향성 (0) | 2020.05.08 |