*** 계속 수정 중입니다
// 클래스 정의
class ClassName {
}
class ClassName {
// 가변 프로퍼티
var mutableProperty: Int = 100
// 불변 프로퍼티
let immutableProperty: Int = 100
// 타입 프로퍼티
static var typeProperty: Int = 100
// 인스턴스 메서드
func instanceMethod() {
print("instance method")
}
}
class ClassName {
// 재정의 불가 타입 메서드 - static
static func typeMethod() {
print("type method - static")
}
// 재정의 가능 타입 메서드 - class
class func classMethod() {
print("type method - class")
}
}
// 인스턴스 생성 - 참조정보 수정 가능
var mutableReference: ClassName = ClassName()
mutableReference.mutableProperty = 200
// 인스턴스 생성 - 참조정보 수정 불가
let immutableReference: ClassName = ClassName()
immutableReference.mutableProperty = 200
mutableReference.immutableProperty = 200
, immutableReference.immutableProperty = 200
은 둘 다 에러가 남-> var, let 키워드와 상관없이 내부 mutable property 변경이 가능하다는 특징
// 타입 프로퍼티 및 메서드
Sample.typeProperty = 300
Sample.typeMethod() // type method
class Student {
// 가변 프로퍼티
var name: String = "unknown"
// 키워드도 `로 묶어주면 이름으로 사용할 수 있습니다
var `class`: String = "Swift"
// 타입 메서드
class func selfIntroduce() {
print("학생타입입니다")
}
// 인스턴스 메서드
// self는 인스턴스 자신을 지칭하며, 몇몇 경우를 제외하고 사용은 선택사항입니다
func selfIntroduce() {
print("저는 \(self.class)반 \(name)입니다")
}
}
// 타입 메서드 사용
Student.selfIntroduce() // 학생타입입니다
// 인스턴스 생성
var yagom: Student = Student()
yagom.name = "yagom"
yagom.class = "스위프트"
yagom.selfIntroduce() // 저는 스위프트반 yagom입니다
// 인스턴스 생성
let jina: Student = Student()
jina.name = "jina"
jina.selfIntroduce() // 저는 Swift반 jina입니다
jina
를 let jina: Student
로, immutable로 선언했지만, jina.name = "jina"
처럼 값을 변경해줄 수 있는 모습을 볼 수 있음