
Class: 상속 가능 ✅
class Animal {
var name: String
init(name: String) {
self.name = name
}
}
class Dog: Animal {
func bark() {
print("멍멍!")
}
}
Struct: 상속 불가능 ❌
Class: 참조 타입 (Reference Type)
class Person {
var name: String
init(name: String) {
self.name = name
}
}
let person1 = Person(name: "Kim")
let person2 = person1 // 참조가 복사됨
person2.name = "Lee"
print(person1.name) // "Lee" 출력
Struct: 값 타입 (Value Type)
struct Point {
var x: Int
var y: Int
}
var point1 = Point(x: 10, y: 20)
var point2 = point1 // 값이 복사됨
point2.x = 30
print(point1.x) // 10 출력 (원본 유지)
Class:
Struct:
Class:
let person3 = Person(name: "Park")
let person4 = person3
print(person3 === person4) // true
Struct:
// Struct 예시
struct Rectangle {
var width: Double
var height: Double
mutating func scale(by factor: Double) {
width *= factor
height *= factor
}
}
// Class 예시
class Vehicle {
var brand: String
init(brand: String) {
self.brand = brand
}
deinit {
print("\(brand) vehicle is being deinitialized")
}
}