Property
struct Student {
var name: String = ""
var `class`: String = "Swift"
var koreanAge: Int = 0
var westernAge: Int {
get {
return koreanAge - 1
}
set(inputValue) {
koreanAge = inputValue + 1
}
}
var westernAge2: Int {
get {
return koreanAge - 1
}
set {
koreanAge = newValue + 1
}
}
static var typeDescription: String = "학생"
var selfIntroduction: String {
get {
return "저는 \(self.class)반 \(name)입니다"
}
}
static var selfIntroduction: String {
return "학생타입입니다"
}
}
print(Student.selfIntroduction)
var yagom: Student = Student()
yagom.name = "yagom"
print(yagom.selfIntroduction)
yagom.koreanAge = 10
print("미국 나이는 \(yagom.westernAge)살")
yagom.westernAge = 11
print("한국 나이는 \(yagom.koreanAge)살")
Property 감시자
struct Money {
var currencyRate: Double = 1100 {
willSet(newRate) {
print("환율이 \(currencyRate)에서 \(newRate)으로 바뀔 예정입니다.")
}
didSet(oldRate) {
print("환율이 \(oldRate)에서 \(currencyRate)으로 바뀌었습니다.")
}
}
var currencyRate2: Double = 1100 {
willSet {
print("환율이 \(currencyRate)에서 \(newValue)으로 바뀔 예정입니다.")
}
didSet {
print("환율이 \(oldValue)에서 \(currencyRate)으로 바뀌었습니다.")
}
}
}
var moneyInMyPocket: Money = Money()
moneyInMyPocket.currencyRate = 1150
상속
class Person {
var name: String = ""
func selfIntroduce() {
print("저는 \(name)입니다")
}
final func sayHello() {
print("hello")
}
static func typeMethod() {
print("type method - static")
}
class func classMethod() {
print("type method - class")
}
final class func finalClassMethod() {
print("type method - final class")
}
}
class Student: Person {
var major: String = ""
override func selfIntroduce() {
print("저는 \(name)이고, 전공은 \(major)입니다")
super.selfIntroduce()
}
override class func classMethod() {
print("overriden type method - class")
}
}
let yagom: Person = Person()
let hana: Student = Student()
yagom.name = "yagom"
hana.name = "hana"
hana.major = "Swift"
yagom.selfIntroduce()
hana.selfIntroduce()
Person.classMethod()
Person.typeMethod()
Person.finalClassMethod()
Student.classMethod()