해결된 질문
작성
·
75
답변 2
0
아직 생성자의 개념이 잘 안 잡혀있으신 것 같습니다.
꼭 다시 한 번 생성자 부분 강의 재시청 부탁드립니다.
첫 줄에 new는 생성자를 부르는 키워드입니다.
생성자는 해당 클래스와 이름이 똑같아야 합니다. 여기서는 Car 클래스의 생성자를 찾는 것이니 수 많은 메서드 중에서 Car라는 이름인 것을 찾아야합니다. 그래서 거기 밖에 넣을 수 없습니다.
(Car()라는 메서드는 1개이고 나머지는 getName()이니까요.)
다른 헷갈릴 수 있는 예시를 한 가지 더 드리자면,
생성자 자체도 여러 개 일 수 있습니다. Car()라는 생성자 여러개라는 뜻이죠.
이럴 때는 파라미터의 종류와 갯수를 봐야합니다.
숫자, 문자가 들어가는지 숫자가 1개 들어가는지 문자가 2개 들어가는 지... 등등
해당 파라미터의 종류와 갯수에 맞는 생성자를 호출하셔야 합니다.
꼭 주의 부탁드립니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김영선님.
질문하신 내용은 객체의 생성자에 대한 이해가 필요한 부분입니다. 자바에서 생성자는 객체를 생성할 때 호출되어 객체를 초기화하는 역할을 하는 메서드입니다. new Car("Spark")
를 호출하면 Car
클래스의 생성자가 호출되며 이때 전달된 값, 즉 “Spark”는 Car(String val)
과 같은 형태로 정의된 생성자에 전달됩니다.
여기서 중요한 것은 메서드가 아니라 객체 생성 시 호출되는 생성자가 변수(이 경우 “Spark”)를 받는다는 점입니다. 즉, Car(String val)
과 같은 생성자에 전달되어 초기화 작업을 수행하게 됩니다. “Spark” 값은 주어진 생성자 매개변수에 적합한 자리로 가게 됩니다.
반면에, 다른 메서드 String getName(String val)
같은 경우는, 객체 생성 시가 아닌 객체가 생성된 이후에 호출될 수 있는 메서드입니다. 이 때문에 처음 객체를 생성할 때에는 생성자가 호출되는 것이지 메서드가 호출되지 않습니다.
비슷한 질문과 해결 방안을 다룬 다른 답변도 아래 링크에서 확인할 수 있습니다:
추가적으로, 아래 링크의 이미지를 통해 생성자와 메서드의 차이점을 시각적으로 이해하실 수 있습니다:
- 자바 생성자와 메서드의 차이점 이미지
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.