인프런 커뮤니티 질문&답변
생성자 호출순서
해결된 질문
작성
·
25
답변 2
0
안녕하세요!
초기화 하려고 하는 구문이 끝나지 않은 상태이면 초기화 되지 않은 상태이다
이렇케 이해해도 되는 부분인가요?
→ 네, 맞습니다.
코드로만 봐서 헷갈릴 수 있는데 컴퓨터 입장에서 생각해보시면 됩니다.
원래 Java는 객체지향 언어로서 컴퓨터 공학 수업을 들어도 6개월을 들여 한 학기를 통해 공부합니다. 우리는 시험 때문에 Java를 굉장히 압축해서 빠른 속도로 배워야 하기 때문에 정확히 이해하기가 어렵습니다.
프로그래밍 언어에서 부모와 자식 관계를 둬서 개발하는 이유는 기본적으로 코드를 중복해서 작성하지 않고 재활용하기 위해서입니다.
(자식 객체라는 것은 기본적으로 뭔가를 상속받아서 재활용하기 위해서 만든 것입니다.)
구현하고자 하는 자식 객체들(예: 나팔꽃, 민들레, 해바라기 등)의 공통 속성을 뽑아서 하나의 부모(공통적인 꽃의 특징)로 만들어서 코딩합니다.
자식 객체를 만들었다면 부모의 필드가 다 초기화된 이후에, 각 자식 클래스가 가지고 있는 추가된 속성이나 재정의한 메서드를 사용할 수 있어야 하는데 그 전에 당연히 부모 필드가 먼저 초기화가 끝나야 합니다.
우리는 앞서 초기화는 생성자라는 메서드로 한다고 배웠습니다.
애초에 뭔가를 상속해서 프로그래밍 하는 이유가 공통 속성을 가진 부모의 특징을 재활용하기 위함인데, 부모가 초기화되지 않았으면 자식 안에 뭔가를 넣을 수도 없습니다.
그래서 int, char, String과 같은 자료형을 사용한 상태의 자식 변수들은 초기값을 가지게 됩니다.
그게 숫자면 0이고, bool이면 false, char나 객체면 null이 됩니다. 참고로 String은 String이라는 클래스에서 파생된 객체입니다.
다른 데이터 기본값은 아래 도표를 참고해주세요.

0
안녕하세요, 인프런 AI 인턴입니다. jongbin7245님.
질문하신 내용은 생성자와 객체의 초기화에 관한 것입니다. Java에서 객체가 생성될 때 초기화가 왜 중요한지, 그리고 초기화가 이루어지는 순서에 대해 설명드리겠습니다.
초기화와 생성자
객체 초기화: Java에서는 객체가 생성될 때 생성자가 호출됩니다. 생성자의 호출 시점에서 객체의 필드 변수들이 초기화됩니다.
초기화 순서:
- 기본 초기화: 객체의 인스턴스 변수들은 기본값으로 자동으로 초기화됩니다. 예를 들어, 참조 타입 변수는
null, 숫자 타입 변수는0으로 초기화될 수 있습니다.
- 명시적 초기화: 클래스 내에서 변수를 직접 초기화한 경우, 해당 값이 설정됩니다.
- 블록 초기화: 초기화 블럭
{}을 사용하여 초기화를 수행할 수 있습니다.
- 생성자 초기화: 생성자가 호출될 때 명시한 초기화 코드가 실행됩니다.
- 기본 초기화: 객체의 인스턴스 변수들은 기본값으로 자동으로 초기화됩니다. 예를 들어, 참조 타입 변수는
초기화 시점: 필드 변수가 정확히 어떤 시점에서 초기화되는지는 초기화 코드의 위치와 생성자의 호출 순서에 따라 결정됩니다. 일반적으로 객체 생성의 문맥 내에서 생성자가 종료되기 전에 초기화가 완료됩니다.
이해를 돕기 위해 유사한 질문의 답변을 아래에 첨부합니다. 초기화 관련한 문제들을 더욱 깊이 있게 이해하는데 도움이 될 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





