자바의 생성자(Constructor)

2022. 4. 29. 11:30·Language/Java
728x90
반응형

오늘은 생성자에 관해 글을 써보려한다.

 

먼저, 생성자는 뭘까?

 

생성자는 객체가 생성될 때 자동으로 발동하는 특별한 메소드이다.

 

대부분 객체를 생성하면 언제나 멤버 값을 설정하는 작업이 선행된다. 바로 이전 글에 썼던 Setter 메소드를 통해 이 작업을 하게 될 것이다.

 

Person p = new Person();
p.setMember("sam", 20);
...

 

그런데 위처럼 매번 객체를 new를 통해 생성하고 다음 줄에서 멤버 값을 설정하고 이 작업을 계속 반복하면 너무 짜증이 날 것이다.

 

생각해보면 변수도 만들면서 값을 초기화하면 코드가 더 간결했었다

 

int a;
a = 1;

int b = 2;

위 코드처럼 a보다 b의 코드가 더 간결하다.

 

객체도 생성하면서 값을 초기화하면 코드가 더 간결해진다

 

가장 위에서 썼던 Person class를 예로 들어 생성자에 대해 더 알아보자.

 

public class Person {
	//접근 제한자가 default인 생성자
    Person(String name, int age) {
    	System.out.println("Person 객체 생성");
	}
    
    //접근 제한자가 public인 생성자
    public Person() {
    	System.out.println("public 생성자 호출");
	}
}

만약 객체에 이렇게 접근 제한자가 default인 생성자가 있다면 다른 패키지에는 객체를 생성할 수 없다.

 

따라서, 객체의 생성자는 접근 제한자가 public이어야 한다. 그래야 어디서든 객체를 생성할 수 있다.

 

그리고 이 두 생성자는 잘 보면 메소드 이름이 같다. 역시 오버로딩이 되어있는  것이다.

728x90
반응형
저작자표시

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

자바 클래스 안에 다른 클래스의 참조 변수가 있는 상황  (0) 2022.05.02
static 키워드  (0) 2022.05.01
자바의 접근 제한자(Access Modifier)  (0) 2022.04.28
자바의 변수 종류  (0) 2022.03.25
자바에서의 메소드 - 2  (0) 2022.03.22
'Language/Java' 카테고리의 다른 글
  • 자바 클래스 안에 다른 클래스의 참조 변수가 있는 상황
  • static 키워드
  • 자바의 접근 제한자(Access Modifier)
  • 자바의 변수 종류
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (237) N
      • Android (84)
      • Language (63) N
        • Java (19)
        • Kotlin (27) N
        • Swift (17)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 해외여행 (0)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CodeLab
    배열
    Kotlin
    viewModelScope
    Observer
    PCCE
    코루틴
    ViewModel
    daterangepicker
    코틀린
    programmers
    프로그래머스
    안드로이드
    LiveData
    자바
    오블완
    MVVM
    getNumericValue
    SWIFT
    android
    티스토리챌린지
    스위프트
    coroutines
    room
    databinding
    Java
    jetpack
    Material
    ios
    aac
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
자바의 생성자(Constructor)
상단으로

티스토리툴바