iOS 공부하는 감자

Day10) 클래스와 상속 본문

22 베이직 챌린지

Day10) 클래스와 상속

DongTaTo 2022. 1. 12. 23:25
반응형

상속

  • 상속은 클래스에서만 사용이 가능하다.
  • 단일 상속만 허용한다. (다중 상속 불가)
  • Super Class(부모 클래스) : 상속하는 클래스
  • Sub Class (자식 클래스) : 상속받는 클래스
  • 클래스는 부모 클래스로부터 물려받은 프로퍼티, 메서드에 접근할 수 있고, 새롭게 재정의도 가능하다.
  • 연산 프로퍼티를 정의한 클래스에서는 연산 프로퍼티에 프로퍼티 감시자를 구현할 수 없지만, 자식 클래스에서는 부모 클래스에서 정의한 연산, 저장 프로퍼티에 프로퍼티 감시자를 구현할 수 있다.

 

기반 클래스(Base Class)

  • 아무 클래스도 상속받지 않는 클래스
  • class Person {
        let name: String?
        var age: Int?
    }

 

 

서브 클래싱(subclassing)

  • 기반 클래스를 통해 새로운 클래스를 만드는 작업을 말한다.
  • 자식 클래스를 정의할 때 이름 옆에 콜론(:)을 쓰고 상속받을 부모 클래스의 이름을 작성한다.
  • class Person {
        let name: String
        var age: Int
        
        init (name: String, age: Int) {
            self.name = name
            self.age = age
        }
    }
    
    class Student: Person {
        let studentNumber: Int = 2017112233
        var grade: Double = 4.0
    }
  • 위 코드처럼 Student 클래스가 Person 클래스를 상속받는 것을 서브 클래싱(subclassing)이라고 한다.

 

 

final 키워드로 상속을 금지

  • 현재 작성하는 클래스를 아무도 상속받을 수 없도록 하고 싶다면 클래스 앞에 final 키워드를 붙여준다.
  • final 키워드를 프로퍼티나 메서드에 추가하여 재정의(오버 라이딩)를 금지할 수도 있다.
  • 더 이상 상속하지 않을 클래스의 경우 final 키워드를 작성해주면 빌드 속도가 향상된다고 한다.
  • final class Person {
        let name: String
        var age: Int
        
        init (name: String, age: Int) {
            self.name = name
            self.age = age
        }
    }
    
    // 오류
    class Student: Person {   // Inheritance from a final class 'Person'
        let studentNumber: Int = 2017112233
        var grade: Double = 4.0
    }

 

상속을 사용할 때 장단점

  • 장점 : 중복되는 코드를 줄일 수 있다.
  • 단점 : 상속을 너무 많이 사용하면 상속의 깊이가 깊어져서 관리가 어려워진다.

 

상속의 규칙

  • 자식 클래스는 하나의 부모 클래스만 상속받을 수 있다.
  • 부모 클래스는 여러 자식 클래스를 가질 수 있다.
  • 상속의 깊이에 제한은 없다.

 

상속을 사용하면 좋은 경우

  • 단일 책임 : 하나의 클래스는 하나의 역할을 수행해야 좋다. / 너무 많은 기능을 수행하면 관리가 어렵다.
  • Type이 분명해야 할 때 : 클래스 간의 명확한 구분이 필요할 때
  • 자식 클래스가 여러 개 필요할 때 : 기본 동작을 바탕으로 다양하게 구현되어야 하는 경우
  • 확장성이 필요할 때 : ex) 학생 클래스를 상속받아서 운동부, 미술부 등 내용에 확장이 필요할 때
  • 정체성을 구분하고 싶을 때

 

 


알고리즘

https://co-dong.tistory.com/18

 

체육복

문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어,

co-dong.tistory.com

 

반응형

'22 베이직 챌린지' 카테고리의 다른 글

Day12) 옵셔널  (0) 2022.01.14
Day11) 프로토콜, 익스텐션  (0) 2022.01.13
Day9) 메서드, 접근제한자, Static  (1) 2022.01.11
Day8) 프로퍼티, 연산 프로퍼티  (0) 2022.01.10
Day7) 클래스와 구조체  (0) 2022.01.09