티스토리 뷰

Web/JAVA

[JAVA] 생성자 Overloading

Aaron 2019. 7. 26. 12:46
반응형

참고 : https://data-make.tistory.com/200 (메서드 Overloading)



#. 생성자 Overloading

  * 클래스로부터 객체를 생성할 때, 필요한 변수들만 적절히 초기화하기 위해 사용


> 생성자 Overloading

  - 클래스로부터 객체를 생성할 때 객체의 변수들을 초기화하는 역할을 담당하는 메서드

  - 메서드 Overloading 지원

    ㄴ 하나의 클래스는 매개변수의 유형과 개수를 달리해서 여러개의 생성자를 갖도록 함


> 사용 예

  - 특정 클래스로부터 객체 생성 -> Overloading 된 생성자 이용 -> 필요한 데이터로만 초기화된 객체 사용 가능

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Employee {
        String name;
        int age;
        int salary;
 
        // 기본 생성자 형태의 생성자
        // Employee Aaron = new Employee();
        public Employee() { }
        
        // 직원 이름, 나이를 초기화하는 생성자
        // Employee Aaron = new Employee("박지훈", 25);
        public Employee(String name, int age) {
                this.name = name;
                this.age = age;
        }
 
        // 직원 이름, 나이, 급여를 초기화하는 생성자
        // Employee Aaron = new Employee("박지훈", 25, 500);
        public Employee(String name, int age, int salary) {
                this.name = name;
                this.age = age;
                this.salary = salary;
        }
cs


> 주의

  - 매개변수의 개수와 타입이 동일하므로, Overloading 불가 => error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Employee {
        ...
 
        // 직원의 이름, 나이를 초기화하는 생성자
        public Employee(String name, int age) {
                this.name = name;
                this.age = age;
        }
 
        // 직원의 이름, 급여를 초기화하는 생성자
        public Employee(String name, int salary) {
                this.name = name;
                this.salary= salary;
        }
}
cs


  - Solution 

    * 매개변수의 위치를 변경하면 생성자 Overloading으로 사용 가능

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Employee {
        ...
 
        // 직원의 이름, 나이를 초기화하는 생성자
        public Employee(String name, int age) {
                this.name = name;
                this.age = age;
        }
 
        // 직원의 이름, 급여를 초기화하는 생성자
        public Employee(int salary, String name) {
                this.name = name;
                this.salary= salary;
        }
}
cs


출처 : SW Expert Academy


반응형
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday