[JAVA] 생성자

2021. 11. 9. 16:39·Language/Java

생성자는 new 연산자로 호출되는 중괄호 { } 블록이다.

객체 생성 시 초기화를 담당하며, 모든 클래스에 반드시 하나 이상 존재한다.

클래스 내부에 선언을 생략하면 기본 생성자가 자동으로 추가된다.

public class Car 
{
	public Car() {
		// 생성자를 생략하면 기본 생성자가 생성됨
	}

}

그렇기 때문에 클래스에 생성자를 선언하지 않아도 new 연산자를 사용해 기본 생성자를 호출해서 객체를 생성할 수 있다.

그러나 클래스에 명시적으로 선언한 생성자가 1개라도 있으면 컴파일러는 기본 생성자를 추가하지 않는다.

명시적으로 생성자를 선언하는 이유는 객체를 다양한 값으로 초기화 하기 위해서이다.

 

명시적으로 생성자 선언하기

클래스(매개변수선언, ...)
{
	//객체의 초기화 코드
}

생성자는 메소드와 비슷한 모양을 가지고 있으나, 리턴 타입이 없고 클래스 이름과 동일하다.

생성자 블록 내부에는 객체 초기화 코드가 작성되는데, 일반적으로 필드에 초기값을 저장하거나 메소드를 호출하여 객체 사용 전에 필요한 준비를 한다.

public class MainClass 
{
	public static void main(String[] args) 
	{
		Car mycar = new Car("그랜저","검정",300);
		
	}
}

다음과 같이 Car 생성자를 호출할 때 3개의 매개값을 제공한다고 가정하자

각각 String, String, int 타입인데 3개의 매개값을 생성자가 받기 위해서는 다음과 같이 매개 변수를 선언해야 한다.

public class Car 
{
	public Car(String model, String color, int maxSpeed)
	{
		//생성자
		System.out.println("model : " + model);
		System.out.println("color : " + color);
		System.out.println("maxSpeed : " + maxSpeed);
	}
}

클래스에 생성자가 명시적으로 선언되어 있을 경우에는 반드시 언언된 생성자를 호출해서 객체를 생성해야만 한다.

model : 그랜저
color : 검정
maxSpeed : 300

 

저작자표시 (새창열림)

'Language > Java' 카테고리의 다른 글

[JAVA] 람다식  (0) 2022.01.16
[JAVA] 인터페이스  (0) 2022.01.16
[자바 프로그래밍 입문] 객체와 메모리  (0) 2021.11.09
[자바 프로그래밍 입문] 02 Java 프로그램의 실행 구조  (0) 2021.11.04
[자바 프로그래밍 입문] 01 Hello Java World!  (0) 2021.11.03
'Language/Java' 카테고리의 다른 글
  • [JAVA] 람다식
  • [JAVA] 인터페이스
  • [자바 프로그래밍 입문] 객체와 메모리
  • [자바 프로그래밍 입문] 02 Java 프로그램의 실행 구조
soyeon26
soyeon26
  • soyeon26
    개발 일지
    soyeon26
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • Web (22)
        • Web (1)
        • HTTP (0)
      • Language (29)
        • Java Script (3)
        • Type Srcipt (1)
        • Java (25)
      • Front (19)
        • HTML+CSS (4)
        • React (15)
      • Back (41)
        • Spring(Springboot) (9)
        • JSP (21)
        • Database (5)
        • NestJS (6)
      • Devops (6)
        • Docker (1)
        • Git & SVN (5)
      • App (7)
        • Android (7)
      • IT 정보 (3)
  • 블로그 메뉴

    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SSR
    스프링부트
    인프런
    과학기술인 등록
    과학기술인 등록번호 발급
    프론트엔드
    과학기술인번호 조회
    Spring
    강의 후기
    자바스크립트set
    과학기술인 번호 발급
    Next.js 필요성
    데이터베이스 강의
    과학기술인등록번호 조회
    React
    csr과ssr의 차이
    김영한
    springboot
    강의후기
    Java
    java의 정석
    csrvsssr
    React Next.js
    SQL강의 추천
    Next.js
    백엔드
    sql강의
    javascript
    중복제거
    서블릿
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
soyeon26
[JAVA] 생성자
상단으로

티스토리툴바