나의 기록, 현진록

[마스터] Struct와 Class / 프로토콜 본문

과제

[마스터] Struct와 Class / 프로토콜

guswlsdk 2025. 2. 5. 17:28
반응형

 

struct User{
    var name: String
    var age: Int
}
var a = User(name: "유현진", age: 5)
var b = User(name: "유현진 아님", age: 6)
var c = b
a.name = "유"
print(a)
print(b)
print(c)
b.name = "현"
print(a)
print(b)
print(c)


// User(name: "유", age: 5)
// User(name: "유현진 아님", age: 6)
// User(name: "유현진 아님", age: 6)
// User(name: "유", age: 5)
// User(name: "현", age: 6)
// User(name: "유현진 아님", age: 6)

 

class User{
    var name: String
    var age: Int
    
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    
    func showInfo(){
        print(name, age)
    }
}

var a = User(name: "유현진", age: 2)
var b = a

a.showInfo()
b.showInfo()
a.name = "비둘기"
a.showInfo()
b.showInfo()

// 유현진 2
// 유현진 2
// 비둘기 2
// 비둘기 2

 

 

 

 

 

 

 

 

 

 

protocol Greetable{
    func greet()
}

struct Person: Greetable{
    let name: String
    
    func greet() {
        print("\(name)입니다. 반갑습니다.")
    }
}

class Robot: Greetable{
    let id: Int
    
    init(id: Int) {
        self.id = id
    }
    func greet() {
        print("\(id)입니다. 반갑습니다.")
    }
}
var a = Person(name: "유현진")
var b = Robot(id: 1)
a.greet()
b.greet()



extension Greetable{
    func greet(){
        print("Hello!")
    }
}

struct Alien: Greetable{
    
}

var c = Alien()
c.greet()



// 유현진입니다. 반갑습니다.
// 1입니다. 반갑습니다.
// Hello!
반응형