왕논의 연구실

패스트캠퍼스 챌린지 18일차 본문

강의/강의 챌린지(iOS 앱 개발 올인원 패키지 Online)

패스트캠퍼스 챌린지 18일차

ywangnon 2021. 11. 18. 21:35

오늘은 클래스 상속에 대해 알아보았습니다.

 

상속에 대한 개념은 다른 언어에서도 많이 있었기 때문에 그 자체는 어렵지 않습니다.

부모, 자식으로 되어서 부모클래스의 것들을 자식클래스도 이용할 수 있습니다.

상속을 이용해서 코드 중복을 줄일 수 있습니다.

 

따로 작성하는 경우

class superClass {
	let a: String = ""
    let b: Int = 0
}

class subClass {
	let a: String = ""
    let b: Int = 0
    let c: String = "자식클래스"
}

 

상속을 이용하는 경우

class superClass {
	let a: String = ""
    let b: Int = 0
}

class subClass: superClass {
    let c: String = "자식클래스"
    // 중복되는 코드 삭제
}

 

상속에는 규칙이 있습니다.

 

한 개의 superclass만 상속 가능합니다. 하나의 superclass에서만 상속받을 수 있습니다. 여러 superclass를 상속 받는 것은 안 됩니다.

부모는 여러 자식들을 가질 수 있습니다. 하나의 superclass는 여러 subclass에 상속해 줄 수 있습니다.

상속의 깊이는 상관이 없습니다.  상속의 깊이란 계속해서 상속해나가는 것을 의미합니다. superclass -> subclass -> subclass -> subclass 식으로 계속해서 상속할 수 있습니다.

 

부모 <- 자식 클래스 로 데이터를 줄 때는 업캐스팅을 합니다.

묵시적으로 타입캐스팅 할 수도 있고, as를 사용해서 명시적으로 할 수 있습니다. 이렇게 하면 부모클래스가 가지고 있는 프로퍼티나 함수에만 접근가능해지게 됩니다. 그리고 override된 것이 있다면 override된 것으로 표현됩니다. 즉, 자식클래스가 가진 것 중 부모도 가지고 있는 것에만 접근 가능해지게 됩니다. 이 상태에서 자식클래스가 가지고 있는 데이터도 보고 싶다면 다운캐스팅을 해줘야합니다.

 

부모 -> 자식 클래스 로 데이터를 줄때는 다운캐스팅을 합니다.

이때는 에러가 발생할 위험이 있습니다. 왜냐하면 자식이 가진 프로퍼티나 함수 중 부모 클래스가 갖지 못한 것들도 있을 수 있기 때문입니다. 그렇기 때문에 옵셔널 바인딩을 통해 확인 후 다운캐스팅해줘야합니다.

 

 

실습사진 1

 

기존에 작성하던 방식이 아니라 다르게 쓰려고 하니깐 글 작성에 대해 굉장히 힘들어졌습니다. 일단 다시 글 쓰는 폼이 잡힐 때까지 왔다갔다 할 것 같습니다.

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #iOS앱개발올인원패키지Online.