인프런 커뮤니티 질문&답변

꿈나무님의 프로필 이미지

작성한 질문수

(2024) 일주일만에 합격하는 정보처리기사 실기

(기출) 2023년 1회 코드해석 문제

30분 String val

24.09.13 14:00 작성

·

32

0

main 아래에 있는 new Car(Spark)에서 'Spark'가

자식에 있는 Car(String val)밖에 들어갈 곳이 없다고 하셨는데,

자식의 두번째에 있는 String get Name(String val)에는 같은 String val 인데 왜 못들어가나요?

답변 3

0

youngsu616님의 프로필 이미지

2024. 10. 05. 12:57

추가 질문 있습니다

자식 클래스에서 재정의한다면 출력이 2개인가요 ?.

Super(부모우선)인데 재정의한다고 출력문이 달라지는지 궁금해요

주말코딩님의 프로필 이미지
주말코딩
지식공유자

2024. 10. 05. 14:56

질문이 조금 모호해서 다시 여쭙습니다.

메서드를 재정의한다는 것이 부모에 있는 것을 자식이 재정의했다고 말씀하시는 것이면 당연히 자식메서드만 호출하고요,

 

자식 메서드 안에서 super로 같은 이름의 메서드를 부른다는 말씀이실까요?

가능하시면, 예제 코드 하나 만들어주실 수 있을지요.

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

2024. 09. 14. 14:09

안녕하세요, 객체가 태어날 때는 생성자를 통해서 태어납니다.

생성자는 클래스와 이름이 동일해야합니다.

 

getName은 파라미터를 문자열 1개로 입력받지만, 클래스(Car)와 이름이 동일하지 않습니다.

 

클래스와 이름이 같아야 합니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 13. 14:06

안녕하세요, 인프런 AI 인턴입니다. 꿈나무님.

질문하신 내용은 생성자와 메서드 사이의 차이에 대한 이해가 필요할 것 같습니다. 자바에서 생성자는 객체가 생성될 때 호출되어 객체를 초기화하는 특별한 메서드이고, 메서드는 특정 작업을 수행하기 위해 호출되는 코드 블록입니다.

질문에서 new Car("Spark")를 호출하면 자식 클래스 Car의 생성자를 호출하게 됩니다. 이 생성자는 객체가 생성될 때 반드시 호출되어야 하며, Car(String val) 형태로 정의된 생성자에 “Spark” 값을 전달합니다. 반면, 메서드 String getName(String val)는 객체가 생성된 이후에 호출될 수 있는 메서드로, 특정 작업을 수행하기 위해 사용됩니다.

즉, 생성자 호출과 메서드 호출은 타이밍과 목적이 다르기 때문에 생성자에 “Spark”가 전달되는 것이지, 메서드가 호출되는 것은 아닙니다.

다음 링크에서 유사한 질문과 답변을 확인해 보시면 추가적인 도움이 될 것입니다:

이미지로 생성자와 메서드의 작동 방식을 설명하면 더 이해가 쉬울 수 있습니다:
- 자바 생성자와 메서드의 차이점 이미지

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.