메서드 재정의하기
상속받은 메서드를 ‘재정의’하여 메서드 정의를 변경할 수 있다. 앞서 본 클래스 ClassA와 ClassB로 돌아 가서 initVar 메서드를 ClassB에 작성하고 싶다고 하자. 이미 ClassB는 ClassA에 정의된 initVar 메서드 를 상속받는다는 것을 알 것이다. 이 상속받은 메서드를 제거하고 동일한 이름으로 새 메서드를 만들 수 있을까? 대답은 ‘그렇다’이다. 그저 동일한 이름으로 메서드를 새로 정의하기만 하면 된다.
부모 클래스에 있는 메서드와 동일한 이름으로 메서드를 정의하면, 새로운 내용이 상속받은 메서드를 대치
하거나 재정의한다.
새 메서드는 반환 형, 인수 개수, 데이터 형이 재정의하는 메서드와 같아야 한다.
- 소스코드
#import <Foundation/Foundation.h> @interface ClassA : NSObject { int x; } -(void) initVar; -(void) printVar; @end |
#import "ClassA.h" @implementation ClassA -(void) printVar{ NSLog(@"x = %i",x); } -(void) initVar{ x = 100; } @end |
#import <Foundation/Foundation.h> #import "ClassA.h" @interface ClassB : ClassA -(void) printVar; -(void) initVar; |
#import "ClassB.h" @implementation ClassB -(void) printVar{ NSLog(@"x = %i",x); } -(void) initVar{ x = 200; } @end |
#import <Foundation/Foundation.h> #import "ClassB.h" int main(int argc, const char * argv[]) { ClassA *a = [[ClassA alloc]init]; ClassB *b = [[ClassB alloc]init];
[a initVar]; [a printVar];
[b initVar]; [b printVar];
return 0; } |
- 실행화면
'C/Objective C > Objective C' 카테고리의 다른 글
Objective C Class 초기화 예제 따라하기 (0) | 2012.07.23 |
---|---|
Objective C Polymorphism(다형성) 예제 따라하기 (0) | 2012.07.18 |
Objective C @Class 지시어 예제 따라하기 (0) | 2012.07.17 |
Objective C 상속 예제 따라하기 두번째 (0) | 2012.07.17 |
Objective C 상속 예제 따라하기 (0) | 2012.07.17 |