TIL 0106 - Extensions

ian·2022년 1월 6일
0

TIL

목록 보기
4/11

오늘은 간단하게! 러프하게!

Extensions 에 대해 알아보는 걸로 하죠잉


전에 상속을 공부했으니.. 확장에 대해 우리가 좀 더 생각해 볼 필요가 있겠죠?

상속이 .. 수직적 개념이라면!
확장은 사평적 개념이라고 생각하면 될 부분인거죠.

간단하게 생각하자면 상속은 성격이 비슷한 타임을 새로 만들어 데이터를 추가하는 거고, 확장은! 현재 존재하는 타입에 기능을 추가하여 사용하는거에요

여기서 알아야 할 점!

확장은!!!!! 메서드만!!!!!! 가능하다는 점!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

클래스나 구조체, 열거형도 가능하다는 점ㅋ.ㅋ


예시의 코드를 만들어보자면

class SomeType {

}

extension SomeType {      // 기존의 타입에 extension 이라는 키워드를 사용해서 확장하고, 새로운 기능을 정의
    func dosomething() {
        print("d ")
    }
}

뭐 이런 식으로 우린 표현할 수 있겠죠잉?

다음 예시를 한 번 봐보죠

class Person {
    var id = 0
    var name = "이름"
    var email = "1234@gmail.com"
    
    func walk() {
        print("사람이 걷는다.")
    }
}

class Student: Person {
    var studentId = 1
    
    override func walk() {
        print("학생이 걷는다.")
    }
    
    func study() {
        print("학생이 공부한다.")
    }
}

extension Student {  // 스위프트에서는 확장에서 구현한 메서드에 대한 재정의가 불가 ⭐️ (@objc 붙이면 가능)
    func play() {
        print("학생이 논다.")
    }
}

class Undergraduate: Student {
    var major = "전공"
    
    override func walk() {
        print("대학생이 걷는다.")
    }
    
    override func study() {
        print("대학생이 공부한다.")
    }
    
    func party() {
        print("대학생이 파티한다.")
    }
    
    // func play()
    
//    override func play() {     // 스위프트에서는 확장에서 구현한 메서드에 대한 재정의가 불가 ⭐️
//        print("대학생이 논다.")
//    }
}



//extension Undergraduate {
//    override func play() {
//        print("대학생이 논다.")
//    }
//}

주석으로 표현할 수 있는 부분은 표현했습니당

profile
디자인씽킹을 하며 iOS 를 공부합니다

0개의 댓글