본문 바로가기
Develop/Swift

Swift2 Class

by J0DEV 2021. 8. 10.
반응형

Swift의 Class를 확인해봅시다.

class 클래스명 { }

 

클래스는 위와 같은 형태로 만듭니다.

 

클래스를 만들면 프로퍼티(멤버 변수들)와 메소드(함수)를 만들게 되어있습니다.

 

여기서 제공하는 프로퍼티는 2가지가 있습니다.

 

우리가 일반적으로 쓰는 멤버변수들을

 

stored property 라고합니다.

 

말그대로 저장하기 위한 변수라고 보시면 됩니다.

 

함수처럼 {}를 넣어서 실제 프로퍼티의 값을 간접적으로 가져와서 어떠한 연산이나 stored property의 값을 넘겨줄때 쓰는 기능이 있는데 이것을

 

computed property라고 합니다.

 

그리고 함수를 클래스에서 만들면 메소드라고 합니다.

 

그렇다면 클래스 오브젝트를 만들어 보겠습니다.

//class object
class Vehicle {
    var currentSpeed = 0.0  //stored property
    var description : String {  //computed property //
        return "traveling at \(currentSpeed)"
    }
    
    func makeNoise(){ //method
        
    }
}

 

이 클래스 오브젝트를 사용하여 인스턴스 오브젝트를 만들면

 

let someVehicle = Vehicle()

 

이런 형태로 만들면 됩니다.

//class object
class Vehicle {
    var currentSpeed = 0.0  //stored property
    var description : String {  //computed property //
        return "traveling at \(currentSpeed)"
    }
    
    func makeNoise(){ //method
        
    }
}

let someVehicle = Vehicle()

print("Vehicle : \(someVehicle.description)")

 

computed property를 호출하여 print하는 코드입니다.

 

 

 

이제 상속에 대해서 보겠습니다.

 

Vehicle을 상속하는 Bicycle라는 클래스를 만들면

 

class Bicycle : Veihcile{ }

 

형태로 만들면 됩니다.

class Bicycle : Vehicle{
    var hasBasket = false
}

let bicycle = Bicycle()

bicycle.hasBasket = true

bicycle.currentSpeed = 15.0

print("Bicycle: \(bicycle.description)")

 

그럼 여기서 Bicycle 을 상속받는 새로운 클래스를 만들어 보겠습니다.

class Tandem: Bicycle{
    var currentNumberOfPassengers = 0
}

let tandem = Tandem()
tandem.hasBasket = true

tandem.currentNumberOfPassengers = 2

tandem.currentSpeed = 22.0

print("Tandem : \(tandem.description)")

 

이것이 기본적인 클래스 만드는 법과 상속과정입니다.

 

 

마지막으로 오버라이딩에 대해 알아보겠습니다.

 

 

우선 Train이라는 클래스를 만들고 Vehicle를 상속받을 것입니다.

 

오버라이드는 제정의 한다는 뜻입니다.

 

Vehicle의 makeNoise를 제정의하여 사용해보겠습니다.

class Train: Vehicle {
    override func makeNoise() {
        print("Choo Choo")
    }
}

let train = Train()

train.makeNoise()

 

 

 

 

반응형

'Develop > Swift' 카테고리의 다른 글

Swift2 Optional Value  (0) 2021.08.10
Swift2 Struct (구조체)  (0) 2021.08.10
Swift2 함수 func  (0) 2021.08.10
Swift2 IF, SWITCH 문  (0) 2021.08.10
Swift2 For, While 문  (0) 2021.08.10