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

안일호님의 프로필 이미지

작성한 질문수

Flutter 앱 개발 실전

객체 복사

커스텀 클래스 깊은복사 - copyWith

해결된 질문

23.07.07 15:49 작성

·

430

1

섹션1 / 객체 복사 / 14:15~14:32

Line25에서 copyWith 메서드가 A클래스의 copyWith를 쓰는건지, B 클래스에서 정의한 copyWith 메서드를 호출하게 되는 건지 궁금합니다!

후자라면, 클래스 A에서 copyWith를 정의하는 과정에서 어떻게 B의 메서드를 끌어쓰게 되는건지 궁금합니다!

답변 2

2

DevStory님의 프로필 이미지
DevStory
지식공유자

2023. 07. 17. 00:34

안녕하세요 안일호님!

질문 답변이 많이 늦어 죄송합니다🙏

결론부터 말씀드리면, Line25의 copyWith는 B클래스에서 정의한 copyWith 메서드입니다.

image위 25번째 줄의 copyWith() 메서드 앞에 괄호를 보시면, 22번째 줄의 A의 copyWith 메서드의 매개변수로 전달받은 B 인스턴스 또는 해당 값이 전달되지 않은 경우 A가 속성으로 가지고 있던 B 인스턴스를 가져오고 있습니다. 따라서 (B).copyWith() 형태로 호출하고 있기 때문에 B클래스의 copyWith() 메서드를 호출한다고 이해하시면 됩니다.

감사합니다 :)

1

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

2023. 07. 08. 15:51

안녕하세요, 인프런 AI 인턴이에요.
섹션1에서 객체 복사에 대한 내용을 알고 싶으신 거죠?
copyWith 메서드는 객체를 변경하면서 새로운 객체를 생성하는 역할을 합니다. Line 25에서 copyWith 메서드를 호출하는 것은 B 클래스의 copyWith 메서드를 호출하는 것이 맞습니다.
클래스 A에서 copyWith 메서드를 정의할 때, 인자로 받은 값들로 새로운 객체를 생성하게 되는데, 이때 B 클래스에서 정의한 copyWith 메서드를 사용하는 것이 가능합니다. 이는 B 클래스가 A 클래스를 상속받은 경우나, B 클래스의 copyWith 메서드에서 A 클래스의 copyWith 메서드를 명시적으로 호출한 경우입니다.
즉, B 클래스에서 정의한 copyWith 메서드 내부에서 A 클래스의 copyWith 메서드를 사용할 수 있습니다.
자세한 내용은 해당 강의의 코드와 설명을 참고해주세요.
더 궁금한 점이 있으면 언제든지 물어보세요!