다형성(Polymorphism)

썹스·2022년 10월 21일
0

Swift 문법

목록 보기
22/68

다형성(Polymorphism)

다형성(Polymorphism)하나의 객체(인스턴스)에 여러 가지 타입을 대입하여 표현할 수 있다는 것을 의미합니다.

✅ 하나의 인스턴스(ABC)를 여러가지 타입으로 표현

클래스에서 만들어진 프로퍼티는 힙(heap)영역에 저장된 값을 참조하여 접근하지만, 메서드의 경우에는 데이터(data)영역에 저장된 코드(code) 주소를 사용하여 함수를 접근합니다.(재정의된 메서드에 접근 가능)

class A{
    var a: Int = 1
   
    func aaa(){
        print("저는 a입니다.")
    }
}

class B: A{
    var b: Int = 2

    override func aaa(){
        print("저는 a(class B: A)입니다.")
    }

    func bbb(){
        print("저는 b입니다.")
    }
}


class C: B{
    var c: Int = 3

    override func aaa(){
        print("저는 a(class C: B)입니다.")
    }

    override func bbb(){
        print("저는 b(class C: B)입니다.")
    }

    func ccc(){
        print("저는 c입니다.")
    }
}


var ABC = [A(), B(), C()]   //각각 상속받아 재정의된 함수를 출력
ABC[0].aaa()  //A클래스 접근, 저는 a입니다.
ABC[1].aaa()  //B클래스 접근, 저는 a(class B: A)입니다.
ABC[2].aaa()  //C클래스 접근, 저는 a(class C: B)입니다.

⭐️메서드 호출 시 상위 클래스에 접근하여 메서드를 호출하는 것이 아닌, 본인의 클래스에서 재정의된 메서드 또는 상속받은 메서드를 호출!!



Reference

참고자료: 앨런 Swift문법 마스터 스쿨

profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글