[Java] 생성자(Constructor)

동동·2021년 10월 26일

JAVA

목록 보기
7/9
post-thumbnail

생성자(Constructor)

클래스로부터 인스턴스를 생성할 때 new 연산자로부터 호출되어 인스턴스의 초기화를 담당한다.

📌 생성자의 특징

  • 모든 클래스에는 반드시 한 개 이상의 생성자 존재
  • 클래스에 생성자가 하나도 선언되어 있지 않으면 컴파일러에 의해 디폴트 생성자 자동 생성
  • 생성자와 메서드 구별 방법
    • 생성자는 반환 타입(return type)이 없음
    • 클래스명생성자명이 반드시 일치
  • 생성자의 목적은 멤버 필드 초기화
  • 만약 한 개라도 프로그래머가 직접 생성자를 구현하면 디폴트 생성자가 생성되지 않음
  • 직접 생성자를 구현할 때 모든 멤버변수에 대해 생성자를 만들지 않을 경우 컴파일 에러 발생

💡 코드로 보는 예시

public class Emotion {
	
    private boolean happy;
    private boolean sad;
    private boolean interesting;
    private boolean love;
    
    // 디폴트 생성자가 없이 아래와 같은 생성자만 있을 경우 컴파일 에러 발생
    // 왜냐하면 모든 멤버변수가 초기화되지 않기 때문
    public Emotion(boolean happy, boolean love) {
    	this.happy = happy;
        this.love = love;
    }
    
    // 컴파일 에러를 방지하기 위해서는 따로 디폴트 생성자를 구현해주어야 함
    public Emotion() {
        
    }
    
        // 이렇게 생성자가 여러개 있는 것을 생성자 오버로딩(Overloading)이라 함     
    
}


📌 오버로딩(Overloading)

오버로딩이란 매개변수만 다른 메서드가 여러개 있는 것을 말한다. 대표적인 예로 println() 메서드가 있다.

오버로딩 조건

  • 메서드 이름이 같아야 함
  • 매개변수 유형과 개수가 달라야 함
  • 매개변수명은 상관 없음
  • 리턴 타입은 상관 없음

오버로딩을 사용하는 이유

  • println() 메서드를 보면 알 수 있듯이 같은 기능을 하는 메서드를 하나의 이름으로 사용 가능
  • 따라서 메서드 이름 절약 가능 (메서드 네이밍 고민할 필요 없음)

🚧 오버로딩(Overloading)과 오버라이딩(Overriding) 차이

  • 오버로딩 : 매개변수만 다른 메서드가 여러개 있는 것
  • 오버라이딩 : 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것
profile
괴발개발

0개의 댓글