[자바 – Java] 생성자 (오버로딩-overloading, 오버라이딩-overriding)

이번엔 메모리 다음으로 생성자에 대해서 알아봅시다 🙂

[자바 -Java] 메모리 – 메서드, 인스턴스, 힙메모리, method, instance, heap memory
[자바 – Java] 객체지향 프로그래밍 특징 추상화 다형성 캡슐화 정리
[Java] 다이어그램 종류 – 시퀀스 다이어그램 (Sequence Diagram)
[Java] 다이어그램 종류 – 클래스 다이어그램(Class Diagram)


1. 생성자(Constructor)

 1) 객체를 생성할 때만 호출하는 특수한 메서드이다.
2) new 연산자가 객체의 생성자를 이용하여 객체를 생성해준다.
3) 생성자명은 클래스 명하고 똑같다.
4) 메서드이지만 반환형이 없는 형태이다.
5) 클래스를 정의할 때 생성자를 기술하지 않으면 매개변수가 없는 생성자가 자동으로 만들어진다. 그리고 디폴트 생성자라고 한다.
6) 객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행하는 메서드를 호출한다.
7) 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private으로 선언되는 경우도 있다.


2. 기본 생성자 (default constructor)

1) 생성자명은 클래스명하고 같다.
2) 메서드이지만 반환형이 없다.
3) 매개변수가 없다.
4) 특별히 수행하는 기능 없다. 구현부가 없다.
5) 프로그래머가 굳이 정의하지 않아도 컴파일러가 클래스명만 보고 자동으로 만들어줄 수 있다.
6) 클래스에는 반드시 적어도 하나 이상의 생성자가 존재해야 한다.
7) 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있다.

 

3. 생성자 만들기

컴파일러가 제공해 주는 기본 생성자 외에 필요에 의해서 생성자를 직접 구현할 수 있다.


4. 여러 가지 생성자를 정의 : 생성자 오버 로딩(overloading)

 1) 생성자를 호출하는 코드에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있음.
2) 오버로딩 –  new : 새로운 메서드라고 생각하면 된다.
3) 매개변수 개수나 자료형은 다르다.
4) 메서드명은 같다.
5) 리턴 타입과 변수명은 상관없다.
6) 하나의 클래스 내에 매개변수 개수나 자료형이 다른 동일한 이름의 메서드를 여러 개 정의하는 것이다.
7) 기능적으로 보면 동일하거나 유사한 일을 수행하는 메서드가 전달받는 매개변수에 따라 각기 다른 연산하는 경우에 유용하다.
    cf)  toString 오버라이딩(overriding) : 재정의하는 것이다. change, modify의 개념으로 이해하면 된다.