본문 바로가기
Java

자바 중급 018. this() 생성자에서 다른 생성자 호출

by Smart Factory in 2020 2021. 9. 5.
728x90
반응형

안녕하세요. 스마트팩토리입니다. 
자바 중급 018. this() 생성자에서 다른 생성자 호출에 대해 알아보겠습니다. 

1. this() - 생성자에서 다른 생성자 호출

가. this() - 

this():
-생성자 호출
-같은 클래스 내에서 다른 생성자를 호출할때 사용
-생성자의 첫 문장에서 사용
-this와 다르다.

 나. this()  적용전

<< Relate.java 클래스>>

중간에  주석 부분은 고려하지 않고 

기본 생성자와 매개변수가 있는 생성자만 고려해 봅니다. 

package ex01;


public class Relate {
private String name;
private int age;
 
public Relate() {}; 
public Relate(String name, int age) {
   this.name=name;
   this.age=age;
    }
   
 public void show() {
 System.out.println(" 성명: "+this.name+" 나이: " +this.age);
 }
}

<< RelateEx.java 실행클래스 >>

c1, c2객체를 생성하여 show()메소드를 실행해 보면 

기본 생성자에는 아무런 값이 없어서 기본값으로 초기화되어 출력되고
매개변수가 있는  c2 는 매개변수값에 맞게 출력되었습니다. 

package ex01;

public class RelateEx {

public static void main(String[] args) {
 Relate c1=new Relate();
 Relate c2=new Relate("kim", 25);
     c1.show();
     c2.show();
}

}

다. this() 적용

 

매개변수가 없는 기본 생성자에 
     Relate(){}

-->  Relate(){ this("Hong",45)

로 설정하였습니다.
이는 매개변수가 있는 
public Relate(String name, int age) {
   this.name=name;
   this.age=age;
이 부분을 호출한 것입니다. 기본생성자도 매개변수가 있는 생성자의 모양을 그대로 따라서 초기값을 같는 것을 알 수 있습니다. 

package ex01;


public class Relate {
private String name;
private int age;
 
//public Relate() {}; 
public Relate(String name, int age) {
   this.name=name;
   this.age=age;
    }
 
 public Relate() {
   this("Hong",45);
    }
 
 public void show() {
 System.out.println(" 성명: "+this.name+" 나이: " +this.age);
 }
}

출력값을 보면 기본 생성자에 아무런 값이 들어가지 않았음에도 불구하고 기본생성자의 매개변수 값이 매개변수가 있는 생성자 형식을 가지고 출력된 것을 볼 수 있습니다. 

매개변수가 있는 생성자를 한번 적어주고 그것을 따라 적용한 방법과 동일한 것을 알 수 있기에 코드를 보다 단순화 할 수 있다는 점이 특징이라 할 수 있습니다. 

 

한꺼번에 보면 이렇습니다. 

 

 

728x90
반응형

댓글