본문 바로가기
JAVA

[JAVA] 생성자 오버로딩 with this

by YoungJu 2023. 1. 29.
반응형
SMALL

생성자 오버로딩

생성자의 매개변수의 타입과 개수가 다른 같은 이름의 생성자를 여러 개 반들 수 있다. 

   public class Person{
        String name;
        int age;

        public Person(){

        }

        public Person(String name){
            this.name = name;
        }

        public Person(String name, int age){
            this.name = name;
            this.age = age;
        }
    }

생성자 호출

public class Exam{
        public static void main(String args[]){
            Person c1 = new Person();       // 기본 생성자
            Person c2 = new Person("홍길동");
            Person c3 = new Person("홍길동", 25);
        }
    }

 

여기서 기본생성자를 호출했을 때, 

["이름 없음", 0 ]

이라는 값을 넣고 싶다면 어떻게 해야 할까?

 

1. 기본

 

   public class Person{
        String name;
        int age;

//변경된 부분
        public Person(){
			this.name = "이름없음";
            this.age = 0;
        }
//
        public Person(String name){
            this.name = name;
        }

        public Person(String name, int age){
            this.name = name;
            this.age = age;
        }
    }

위의 코드처럼 적어도 문제는 없다. 

하지만 this.name과 this.age 부분이 반복되서 나오고 있다. 

코딩을 할 때는 반복되는 부분은 줄여주는 것이 좋다. 

 

2. 반복 제거 

   public class Person{
        String name;
        int age;

        public Person(){
//			this.name = "이름없음";
//          this.age = 0;
			// 변경
            this("이름없음", 0);
        }

        public Person(String name){
            this.name = name;
        }

        public Person(String name, int age){
            this.name = name;
            this.age = age;
        }
    }

여기서 this는 자기 자신을 가리킨다. 

그렇기에 this("이름없음", 0)은 Person("이름없음", 0)을 호출하게 된다. 

 

자기 자신의 생성자를 호출함으로써 유사한 코드의 중복을 방지할 수 있다. 

반응형

'JAVA' 카테고리의 다른 글

[JAVA] JAVA의 기본형 타입  (0) 2022.09.14
JAVA 웹 크롤링(Web crawling)  (0) 2021.04.24

댓글