SlideShare a Scribd company logo
1 of 23
8. 상속
프로그래밍 오브젝티브-C 2.0 5/E
오근현
상세목차
• 8.1 모든 것은 루트에서 시작된다
• 8.2 상속으로 확장하기 - 새 메소드 추가
• 8.3 메서드 정의하기
• 8.4 추상 클래스
8.1 모든 것은
루트에서 시작된다
루트 클래스
• Root class
• 클래스 계층도의 최상
위
• 모든 클래스들의 부모
• 부모를 가지지 않음
NSObject
Fraction
루트 클래스
서브 클래스
NSObject
• The root class of all
Objective-C classes
• The primary access point
whereby other classes
interact with the
Objective-C runtime
• Declaring the
fundamental Object
interface and
Implements basic object
behavior
상속시 부모 멤버 변수 접근 권
한
• @interface에 선언된 변수는 자식 클래스에서 접
근가능(Protected)
• @implementation에 선언된 변수는 자식 클래스
에서 접근 불가(Private)
상속시 부모 메서드
접근 권한
• 자식 클래스에서 visible 한 메서드는 접근 가능
(public)
• 자식 클래스에서 visible 하지 않은 메서드는 접
근 불가(private)
상속을 설명하는 간단한 예
제
NSObject
ClassA
부모 클래스
상속을 설명하는 간단한 예제
(계속)
NSObject
ClassA
ClassB
상속을 설명하는 간단한 예제
(계속)
8.2 상속으로 확장하기
- 새 메서드 추가
Rectangle.h
NSObject
Rectangle
프로퍼티 선언
Rectangle.m
Square.h
NSObject
Rectangle
Square
새로운 메서드 추가
Square.m
부모 클래스의 메서드
부모 클래스의 “메서드”
==> width가 프로퍼티이므
메서드를 통해 접근
8.2.1~8.2.3은 상속과 관련
된 얘기가 아니어서 생략
==> 18장에서 다시 언급
참고: @class 지시어
• C++에서 “class 클래스이름;”과 같은 역할
• import되지 않은 인스턴스 변수를 @class로 선
언하면 컴파일러에게 그 클래스가 무엇인지 알려
준
• 클래스를 직접 import하면 필요없음
• 객체의 인터페이스를 필요한 경우(ex. 메서드 호
출)는 @class가 되어있더라도 import가 필요함
8.3 메서드 재정의하기
메서드 재정의하기 예제
메서드 재정의하기 예제(계
속)
NSObject
ClassA
메서드 재정의하기 예제
(계속)
NSObject
ClassA
ClassB
메소드 재정의
메서드 재정의하기 예제(계속)
재정의된 initVar메소드가 호출됨
8.4 추상 클래스
==> 생략

More Related Content

Similar to 프로그래밍 오브젝티브 C 2.0 (5/E) - 8장 상속

Swift 0x18 access control
Swift 0x18 access controlSwift 0x18 access control
Swift 0x18 access controlHyun Jin Moon
 
토비의 스프링 - DI
토비의 스프링 - DI토비의 스프링 - DI
토비의 스프링 - DIJU Chae
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계AnselmKim
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11hungrok
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerKyung Koo Yoon
 
클린 코드 part2
클린 코드 part2클린 코드 part2
클린 코드 part2Minseok Jang
 
11장 시스템
11장 시스템11장 시스템
11장 시스템kidoki
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본용호 최
 
[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)용호 최
 
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 APINAVER Engineering
 

Similar to 프로그래밍 오브젝티브 C 2.0 (5/E) - 8장 상속 (20)

Swift 0x18 access control
Swift 0x18 access controlSwift 0x18 access control
Swift 0x18 access control
 
Java_05 class
Java_05 classJava_05 class
Java_05 class
 
Java class
Java classJava class
Java class
 
Hibernate5.x
Hibernate5.xHibernate5.x
Hibernate5.x
 
Annotation
AnnotationAnnotation
Annotation
 
토비의 스프링 - DI
토비의 스프링 - DI토비의 스프링 - DI
토비의 스프링 - DI
 
Java(2/4)
Java(2/4)Java(2/4)
Java(2/4)
 
Java script
Java scriptJava script
Java script
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 
Java(1/4)
Java(1/4)Java(1/4)
Java(1/4)
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control Container
 
클린 코드 part2
클린 코드 part2클린 코드 part2
클린 코드 part2
 
11장 시스템
11장 시스템11장 시스템
11장 시스템
 
Linq
LinqLinq
Linq
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
 
5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)
 
[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)
 
Design patterns
Design patternsDesign patterns
Design patterns
 
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
 

프로그래밍 오브젝티브 C 2.0 (5/E) - 8장 상속