class 문법 질문입니다
143
작성한 질문수 23
class Test{
var age = 100
var name = "배트맨"
func simpleFunction(){
print("안녕하세요 저는 \(name)입니다. 저는 \(age)살임")
}
init(){
simpleFunction()
print("부모 클래스 init")
}
}
class Test1: Test{
override func simpleFunction(){
print("자식 클래스")
}
}
let test1 = Test1()
test1.simpleFunction()자식 클래스
부모 클래스 init
자식 클래스
위와 같은 상황입니다 일단 Test1에 init 메서드가 없으니 컴파일러가 자동으로
init(){
super.init()
}을 생성하겠죠 그럼 부모 클래스의 init을 호출할 거고 부모 클래스의 init에는 simpleFunction 메서드 호출 구문이 있으니 호출하겠죠 근데 분명 부모 클래스 내에서 호출했는데 왜 재정의된 simpleFunction 메서드의 내용이 호출됐는지 이해가 되질 않습니다
구글링이랑 gpt 이용해서 알아 보니 재정이된 메서드는 부모 클래스에서 호출하더라도 재정의된 내용이 호출된다는데 이 말대로라면super.simpleFunction를 이용해서 메서드를 호출한다고 하더라도 재정의 됐으니 재정의된 내용이 출력되어야 할텐데 super를 이용한 호출은 또 재정의 되기 전 내용이 출력됩니다. 호출 기준이 너무 헷갈리는데 이 부분에 대해서 알려주시면 감사하겠습니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대한 답변은 다음과 같습니다.
Swift에서 클래스의 메서드를 오버라이딩(재정의)하면, 부모 클래스에서 정의된 메서드 대신 오버라이드된 메서드가 호출됩니다. 이는 다형성의 한 예로, 서브클래스에서 오버라이드된 메서드가 부모 클래스의 메서드를 대체하기 때문입니다. 따라서, 부모 클래스의 init에서 simpleFunction 메서드를 호출해도, 실제로 실행되는 것은 Test1 클래스에서 오버라이드된 simpleFunction입니다.
super 키워드를 사용하면, 부모 클래스의 메서드를 명시적으로 호출할 수 있습니다. 예를 들어, Test1 클래스에서 super.simpleFunction()을 호출하면 Test 클래스에 구현된 원본 simpleFunction 메서드가 실행됩니다. super는 서브클래스에서 부모 클래스의 속성이나 메서드에 접근할 때 사용합니다.
요약하자면, 서브클래스에서 오버라이드된 메서드는 부모 클래스에서 호출해도 오버라이드된 버전이 실행되며, super를 사용한 호출은 오버라이드 이전의 부모 클래스의 메서드를 호출합니다. 이로 인해 다형성을 구현하고 클래스의 상속 관계에서 유연성을 확보할 수 있습니다.
수강 기간 연장 문의
0
28
1
수강연장부탁드려도될까요..
0
42
2
Combine Playground 에서 실행 시
0
57
2
70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문
0
42
1
searchable이 화면 하단에 위치해요
0
62
2
Drawing Cycle 관련 질문
0
72
1
앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?
0
95
2
델리게이트 패턴 관련 질문
0
66
2
ios 애드몹 광고
0
134
2
수강 기간 연장 부탁드릴 수 있을까요?
0
61
1
활용 앱 57강 질문입니다.
0
55
1
그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 합니다...ㅜㅜ
0
75
2
과거 ai없을때 듣고 다시 듣는 중인데
1
55
1
활용 앱 30강 에러 질문입니다
0
64
2
예제 빌드시 The compiler is unable to type-check this expression in reasonable time 에러 발생
0
54
1
TextField 에 Binding 으로 연결하면 에러 발생
0
55
1
xcode 26.2 에서 ReducerOf<Self> 이슈
0
77
2
20강 Task 내부에서 nonisolated async 호출 예제 질문드립니다
0
78
2
19강 Actor 의 동작 관련해 질문드립니다
0
83
2
기초앱 17강 Contraints 설정 질문입니다.
0
67
2
전체 파악 가능한 소스코드 요청합니다.
0
201
1
restart 함수
0
362
1
GameViewController에서 오류가 발생 합니다.
2
404
3
GameScene에 GADRewardedAdDelegate 넣을 때
1
376
5





