c o d i n g . . πŸ‰/ios

[μΈν”„λŸ°] 아이폰 μ•± 개발(3)

H J 2022. 6. 21. 21:05

μ˜€λŠ˜μ€ ν΄λž˜μŠ€μ™€ ꡬ쑰체 그리고 μ—΄κ±°ν˜• !


πŸ‰ class πŸ‰

class Circle { // classλͺ…은 λŒ€λ¬Έμžλ‘œ μ‹œμž‘
    var radius = 3.123 // class 속성
    let pi = 3.1415926535

    func area() -> Double { // λ©”μ†Œλ“œ
        return (radius * radius * pi)
    }
}

let circle = Circle() // μΈμŠ€ν„΄μŠ€(객체, 였브젝트) 생성
let circle = Circle.init() // μœ„μ™€ κ°™μŒ

circle.area()

ν”„λ‘œνΌν‹°κ°€ μ΄ˆκΈ°ν™”λΌμžˆμ§€ μ•ŠμœΌλ©΄ μ—λŸ¬

 

  • class 상속
class Apple { // super class: 곡톡
    var appleColor = "red"
}

class AppleAndBanana : Apple { // sub class: μΆ”κ°€
    var bananaColor = "yellow"
}

let fruit = AppleAndBanana()
fruit.appleColor
fruit.bananaColor

곡톡 κΈ°λŠ₯듀은 슈퍼 클래슀둜 λ¬Άκ³  상속을 λ°›μ•„ λ‹€μ–‘ν•œ μ„œλΈŒ 클래슀 λ§Œλ“€μ–΄ μ‚¬μš©

 

  • override
class Apple { // super class: 곡톡
    var appleColor = "red"
    func taste() {
        print("yum !")
    }
}

class AppleAndBanana : Apple { // sub class: μΆ”κ°€
    var bananaColor = "yellow"
		
		// override 톡해 μž¬μ •μ˜
    override func taste() {
        print("super ")
        super.taste() // super classλ₯Ό 의미
    }
}

let fruit = AppleAndBanana()
fruit.appleColor
fruit.bananaColor

fruit.taste()

 

 

  • μƒμ„±μž init
class Circle {
    var radius: Double
    let pi = 3.1415926535
	   
		// init μ—¬λŸ¬ 개 생성 κ°€λŠ₯
    init() {
        radius = 10.0
    }
    
    init(radius: Double) {
        self.radius = radius
    }

    func area() -> Double {
        return (radius * radius * pi)
    }
}

let circle = Circle.init(radius: 20.0)

circle.area()
// μƒμ„±μž ν•¨μˆ˜λ‘œ 생성

var num = Int.init(10)

var message = String("Hello")

var array = [Int].init(arrayLiteral: 1, 2, 3, 4)

.init μƒλž΅ κ°€λŠ₯

 

 

  • ν΄λž˜μŠ€μ™€ ꡬ쑰체
    • 곡톡점
      • 속성 μ •μ˜
      • λ©”μ†Œλ“œ μ •μ˜
      • μƒμ„±μžλ₯Ό ν†΅ν•œ 초기 μ„€μ •
      • Extension, protocol μ‚¬μš© κ°€λŠ₯
    • 클래슀만의 νŠΉμ§•
      • 상속
      • νƒ€μž… μΊμŠ€νŒ…
      • μ†Œλ©Έμžλ₯Ό ν†΅ν•œ λ¦¬μ†ŒμŠ€ 정리 (deinit)
      • μ°Έμ‘° νƒ€μž…
    • ꡬ쑰체 μ‚¬μš©ν•˜λŠ” 경우
      • λͺ‡ 가지 κ°„λ‹¨ν•œ 데이터 값을 μΊ‘μŠν™”
      • ν• λ‹Ή 및 전달 μ‹œ 볡사가 합리적
      • λͺ¨λ“  속성도 κ°’ νƒ€μž… -> 볡사가 λ§žμ„ λ•Œ
      • 상속이 ν•„μš” 없을 λ•Œ
    • λŒ€λΆ€λΆ„ class μ‚¬μš©

 


πŸ‰ μ—΄κ±°ν˜• πŸ‰

enum Fruit {
    case apple
    case banana
    case watermelon
}

var fruit: Fruit = .watermelon

func printFruit(fruit: Fruit) {
    switch fruit {
    case .apple:
        print("apple !")
    case .banana:
        print("banana !")
    case .watermelon:
        print("watermelon πŸ‰")
    }
    // μ—΄κ±°ν˜•μ€ μ’…λ₯˜κ°€ ν•œμ • -> default ν•„μš” X
}

printFruit(fruit: .watermelon)

defaultκ°€ ν•„μš” μ—†λ‹€ → μ’…λ₯˜κ°€ κ³ μ •λ˜μ–΄ 있기 λ•Œλ¬Έ

 

  • rawValue
enum Fruit: String{
    case apple = "🍎"
    case banana = "🍌"
    case watermelon = "πŸ‰"
}

var fruit: Fruit = .watermelon

print(fruit.rawValue)

값도 넣을 수 있음


이제 남은 κ°•μ˜λ„ λ“€μœΌλŸ¬ 가야지 !