본문 바로가기

교육/Swift

[swift] init

1. init

모든 멤버가 반드시 초기화 되어야 함

변수 선언 옆에 하던지, 초기화 함수를 만들던지 꼭 해야 에러가 안남


2. 샘플 코드

class Point

{

    //    var x : Int = 0

    var x : Int

    var y : Int

    //    init() // 생성자

    //    {

    //        x=0

    //        y=0

    //    }

    init(_ x : Int,_ y : Int) // 생성자

    {

        self.x=x

        self.y=y

    }

    // 편의 생성자 : 하나의 생성자에서 다른 생성자를 호출하고 싶을 사용

    convenience init(){self.init(0,0)}

    

    // 실패 가능 생성자(failable constructor

    init?(s:String)

    {

        x=0

        y=0

        return nil

    }

}

var pt = Point()

//var pt2 = Point(x: 1, y: 2) // 쓰기 싫으면 init 앞에 _ _ 달아주자

var pt2 = Point(1,2)

var pt3 = Point(s:"AA")

showType(pt3)

print(pt.x, pt.y)

print(pt2.x, pt2.y)


// 구조체만 지원되는 초기화 기술

struct SPoint

{

    //    var x : Int = 0

    var x : Int = 0

    var y : Int = 0

}

var spt = SPoint(x: 3, y: 4) // 만든적 없는데 지원해줌 클래스는 안됌 structe point p {1,2} default public이기 때문에

// member wise initializer 라고 class 지원 안됌



// 상속과 생성자

class Rect : Point

{

    var width : Int = 0

    var height : Int = 0

    init()

    {

        super.init(1,2)

    }

}

var r = Rect()

'교육 > Swift' 카테고리의 다른 글

[swift] method  (0) 2016.08.08
[swift] property  (0) 2016.08.08
[swift] 구조체와 클래스  (0) 2016.08.05
[swift] enum  (0) 2016.08.05
[swift] 클로저  (0) 2016.08.04