클래스란 객체(object)를 만들어 내기 위한 틀이며 만들어 낼 객체의 속성과 메서드의 집합을 담아 놓은것
객체(object)란 클래스로부터 만들어지는 실체, 클래스로 선언된 변수를 객체라 한다.
인스턴스(Instance)란 객체가 메모리에 할당이 된 상태이며 런타임에 구동되는 객체를 말합니다. 객체와 같은 의미로 쓰이기도 합니다.
class Person {
let name: String
var iq: Int
var str: Int
init(name: String, iq: Int, str: Int) {
self.name = name
self.iq = iq
self.str = str
}
func introduction() {
print("저의 이름은 \(self.name), 지능은 \(self.iq), 힘은 \(self.str)입니다.")
}
func levelUp() {
self.iq += 1
self.str += 1
print("\(self.name)의 지능과 힘이 증가했습니다! 지능: \(self.iq)/힘: \(self.str)")
}
}
name, iq, str 속성을 갖고 introduction, levelUp이라는 메서드를 갖은 클래스
// 클래스 타입을 갖은 변수가 객체
let hoho: Person
// 인스턴스화
hoho = Person(name: "호호", iq: 100, str: 100)
hoho.introduction() // 저의 이름은 호호, 지능은 100, 힘은 100입니다.
hoho.levelUp() // 호호의 지능과 힘이 증가했습니다! 지능: 101/힘: 101
hoho.levelUp() // 호호의 지능과 힘이 증가했습니다! 지능: 102/힘: 102
hoho.introduction() // 저의 이름은 호호, 지능은 102, 힘은 102입니다.
// 객체를 생성하며 인스턴스화
let gwangsu = Person(name: "광수", iq: 99, str: 99)
gwangsu.introduction() // 저의 이름은 광수, 지능은 99, 힘은 99입니다.
클래스 타입을 갖은 실체 곧 변수가 객체
객체가 메모리가 할당되면서 인스턴스화
유튜브 설명을 보고 헷갈렸던게 어느정도 정리가 되었다.