Notice
Recent Posts
Recent Comments
Link
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

lgvv98

[iOS/Swift] init๊ณผ super.init์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ๐Ÿค” ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/๐Ÿงธ Swift ๋ฌธ๋ฒ•

[iOS/Swift] init๊ณผ super.init์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ๐Ÿค”

๐Ÿฅ• ์บ๋Ÿฟ๋งจ 2022. 2. 25. 20:40

init๊ณผ super.init์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

โœ… init๊ณผ super.init์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ์„ ์œ„ํ•ด์„œ init์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋“ค์„ ์ดˆ๊ธฐํ™” ์‹œํ‚ค๋‹ค ๋ณด๋‹ˆ init์— ๋Œ€ํ•ด์„œ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ๋‹ค.

๊ทธ๋Ÿผ ์ •๋ฆฌ ใ„ฑใ„ฑ 

 

SwiftUI๋ฅผ ํ†ตํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์•˜์Œ 

 

โœ… init์— ๋Œ€ํ•ด์„œ ํฐ ํ‹€๋งŒ ์žก๊ณ  ๊ฐ€์ž๋ฉด

1. ์ดˆ๊ธฐํ™” ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์€ init์œผ๋กœ ํ†ต์ผ๋œ๋‹ค.

2. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜, ์ด๋ฆ„, ํƒ€์ž…์€ ์ž„์˜๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ๋งค๊ฐœ๋ณ€์„œ์˜ ์ด๋ฆ„๊ณผ ๊ฐœ์ˆ˜, ํƒ€์ž…์ด ์„œ๋กœ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ดˆ๊ธฐํ™” ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

4. ์ •์˜๋œ ์ดˆ๊ธฐํ™” ๋ฉ”์†Œ๋“œ๋Š” ์ง์ ‘ ํ˜ธ์ถœ๋˜๊ธฐ๋„ ํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ๊ฐ„์ ‘์ ์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.

 

โœ… ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

class Student {
    
    var age: Int
    var name: String
    
    init() {
        self.age = -1
        self.name = "ํŒŒ๋ผ๋ฏธํ„ฐ 0๊ฐœ"
    }
    
    init(age: Int) {
        self.age = age
        self.name = "ํŒŒ๋ผ๋ฏธํ„ฐ 1๊ฐœ"
    }
    
    init(age: Int, name: String) {
        self.age = age
        self.name = name
        print("Student init")
    }
}

ํ•™์ƒ์— ๋Œ€ํ•œ struct๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์ดˆ๊ธฐํ™”๋ฅผ ์ €๋ ‡๊ฒŒ ๋„ฃ์–ด์„œ ์ž์œ ๋กญ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด๋ด„.

 

๊ทธ๋ ‡๋‹ค๋ฉด ํ•™์ƒ์ด ํ•™๊ณผ์— ์†ํ•ด์žˆ๋‹ค๊ณ  ํ•˜๋ฉด ๋‹ค๋ฅธ ๊ตฌ์กฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๊ฒ ์ง€?

ํ•™๊ณผ๋Š” ํ•™์ƒ ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๊ตฌํ˜„ ใ„ฑ 

class Department: Student {
    var grade: Float
    
    override init() {
        self.grade = 3.0
        super.init(age: 0, name: "")
    }
    
    
    init(age: Int, name: String, grade: Float) {
        self.grade = grade
        super.init(age: age, name: name)
        print("Department init")
    }
    
}

๋ณด์ด๋Š”๊ฐ€?

init์„ ์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐ŸŸ  ์—ฌ๊ธฐ์„œ ์ž ๊น! 

Department(age: 25, name: "lgvv", grade: 4.4)

์ดˆ๊ธฐํ™”๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ค ์ˆœ์„œ๋กœ print๋ฌธ์ด ์ฐํž๊นŒ?

 

๊ฒฐ๊ณผ๋Š” ๋ฐ”๋กœ 

Student init // ์‹คํ–‰ 1
Department init // ์‹คํ–‰ 2

 

 

๐Ÿ’ก ์—ฌ๊ธฐ์„œ ์ฃผ!๋ชฉ!

โœ… override init๊ณผ super.init ์€ ์–ด๋–ป๊ฒŒ ์ดํ•ดํ•ด์•ผ ํ• ๊นŒ?

override init์€ Student์˜ ๊ตฌ์กฐ์ฒด์— ์ •์˜๋˜์–ด ์žˆ๋Š” init ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.

๊ทผ๋ฐ ์™œ ์‚ฌ์šฉ?

๊ทธ ์ด์œ ๋Š” ๋ฐ”๋กœ, Department์˜ ๊ฒฝ์šฐ Student์— ์„ ์–ธ๋œ init์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ, Department์—์„œ override ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค. ๊ทผ๋ฐ ๋ฌธ์ œ๊ฐ€ Department์˜ ๊ฒฝ์šฐ์—๋Š” Student์—์„œ ์ดˆ๊ธฐํ™” ๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์„œ ์ด ๊ฒฝ์šฐ์—๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ , ์šฐ๋ฆฌ๋Š” ๊ทธ์— ๋งž๊ฒŒ ๋Œ€์‘ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์šฐ๋ฆฌ๋Š” ์ด๋Ÿฐ ๊ฒƒ์„ ๋ฐ”๋กœ ์ดˆ๊ธฐํ™” ๊ตฌ๋ฌธ ๋ธ๋ฆฌ๊ฒŒ์ด์…˜์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

โœ… ์ดˆ๊ธฐํ™” ๊ตฌ๋ฌธ ๋ธ๋ฆฌ๊ฒŒ์ด์…˜

์ดˆ๊ธฐํ™” ๊ตฌ๋ฌธ ๋ธ๋ฆฌ๊ฒŒ์ด์…˜์ด๋ž€, super.init์„ ์ญ‰ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์ธ๋ฐ, ์•„๋ž˜ ๊ทธ๋ฆผ์„ ํ•œ ๋ฒˆ ๋ณด๋„๋ก ํ•˜์ž.

์ด๋Ÿฐ์‹์œผ๋กœ ๋ฌผ๊ณ  ๋ฌผ์–ด์ ธ์„œ ์ดˆ๊ธฐํ™” ๋˜๋Š” ๊ฒƒ

 

init์— ๋Œ€ํ•ด์„œ ์ž˜ ์•Œ์•„๋ณด์•˜๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์œ„ํ•ด ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ผ์ด ๋งŽ์•˜๋Š”๋ฐ, ์•ž์œผ๋กœ๋„ ๋” ๊ณต๋ถ€ํ•ด๋ณด๋„๋ก ํ•˜์ž.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ดˆ๊ธฐํ™” ์ˆœ์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋ ๊นŒ?

์ž์‹ํด๋ž˜์Šค์— ์กด์žฌํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์—ญ์ˆœ์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค.

 

 

โœ… ์•„๋ž˜๋Š” ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

//
//  ContentView.swift
//  init_Training
//
//  Created by Hamlit Jason on 2022/02/25.
//

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello, world!")
                .padding()
            Button(
                action: {
                    print("Button DidTap")
//                    _ = Department()
//                    print("next")
                    _ = Department(age: 25, name: "lgvv", grade: 4.4)
                },
                label: {
                    Text("๋งˆ์ด๋ฒ„ํŠผ ์ด๊ฑฐ ํด๋ฆญ์ข€ ๋˜๊ฒŒํ•ด์ฃผ์„ธ์š”.")
                }
            )
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

class Student {
    
    var age: Int
    var name: String
    
    init() {
        self.age = -1
        self.name = "ํŒŒ๋ผ๋ฏธํ„ฐ 0๊ฐœ"
    }
    
    init(age: Int) {
        self.age = age
        self.name = "ํŒŒ๋ผ๋ฏธํ„ฐ 1๊ฐœ"
    }
    
    init(age: Int, name: String) {
        self.age = age
        self.name = name
        print("Student init")
    }
}

class Department: Student {
    var grade: Float
    
    override init() {
        self.grade = 3.0
        super.init(age: 0, name: "")
    }
    
    
    init(age: Int, name: String, grade: Float) {
        print("Department init start")
        self.grade = grade
        super.init(age: age, name: name)
        print("Deprtment init end")
    }
}

๋ฒ„ํŠผ ํด๋ฆญ์˜ ๊ฒฐ๊ณผ

 

Comments