자바(Java) - 생성자 오버로딩이란? 예제 포함

안녕하세요

이번 시간에는 자바에서 자주 쓰이는 생성자 오버로딩에 대해서 글을 써볼까 합니다.

우선 생성자는 객체가 생성될 때 최초로 실행되는 메소드를 뜻합니다.

생성자를 구성시 유의할 점이 두가지가 있습니다.

1)생성자 이름은 클래스명과 동일하게 지어야 합니다.
2)반환타입을 가져서는 안됩니다.

생성자의 주요 역할은 멤버 변수를 초기화하는 일입니다.

사용자가 생성자를 특별히 구현하지 않았을 경우 컴파일러는 default 생성자를 제공해줍니다. (하지만 사용자가 생성자를 구현하면 default 생성자는 사라집니다)

자바에서는 생성자를 다양하게 오버로딩 함으로써 다양한 초기값을 부여합니다.

아래 예제는 Overloading이라는 메인 함수에서 Superman 클래스와 Auqaman 클래스의 객체들을 생성하고 출력하는 예제입니다.

(이번 예제는 클래스별로 구분하지 않고 한번에 뭉쳐봤습니다)



class Superman{
 String name;
 int height;
 int power;
 
 //생성자 오버로딩(Constructor Overloading)
 public Superman(){ // 기본 생성자
  this("슈퍼맨", 150, 100);
  /* 코드의 간결화를 위해 생략.
  이렇게 하기 위해서는 매개 변수가 3개인 메소드는 꼭 남겨야 한다.
  this.name="슈퍼맨";
  this.height=150;
  this.power=100;*/
 }
 
 public Superman(String name){
  this(name, 190, 100);
 }
 public Superman(String name, int height){
  this(name, height, 50);
 }
 // 위 세개의 메소드의 목표점
 public Superman(String name, int height, int power){
  this.name=name;
  this.height=height;
  this.power=power;
 }
 public void showInfo(){
  System.out.println("---슈퍼맨 정보---");  
  System.out.println("이  름: "+name);
  System.out.println("키    : "+height);
  System.out.println("초능력: "+power); }
 }
}
public class Overloading {
 public static void main(String[] args) {
   Superman s1 = new Superman();
   s1.showInfo();
   Superman s2 = new Superman("박정현");
   s2.showInfo();
   Superman s3 = new Superman("김범수", 169);
   s3.showInfo();
   Superman s4 = new Superman("임재범", 190, 90);
   s4.showInfo();
 }
}


댓글 없음:

댓글 쓰기