* Property 및 메소드 정의
* 서브스크립트 정의
* 초기화 블록 정의
* 확장(extends) 구문
* 프로토콜 구현
* 상속
* 타입 캐스팅
* 소멸화 구문
* 참조에 의한 전달(Struct는 값에 의한 전달)
class VideoMode {
var interlaced = false
var frameRate = 0.0
var name: String?
}
func changeName(v: VideoMode) {
v.name = "Function Video Instance"
}
let video = VideoMode()
video.name = "Original Video Instance"
print("video 인스턴스의 name 값은 \(video.name!)입니다.")
//video 인스턴스의 name 값은 Original Video Instance입니다.
let dvd = video
dvd.name = "DVD Video Instance"
print("video 인스턴스의 name 값은 \(video.name!)입니다.")
//video 인스턴스의 name 값은 DVD Video Instance입니다.
changeName(v: video)
print("video 인스턴스의 name 값은 \(video.name!)입니다.")
//video 인스턴스의 name 값은 Function Video Instance입니다.
동일 인스턴스 참조
class VideoMode {
var interlaced = false
var frameRate = 0.0
var name: String?
}
let video = VideoMode()
let dvd = video
if (video === dvd) {
print("video와 DVD는 동일한 인스턴스를 참조하고 있습니다.")
} else {
print("video와 DVD는 서로 다른 인스턴스를 참조하고 있습니다.")
}
// "video와 DVD는 동일한 인스턴스를 참조하고 있습니다."
서로 다른 인스턴스 참조
class VideoMode {
var interlaced = false
var frameRate = 0.0
var name: String?
}
let video = VideoMode()
let dvd = VideoMode()
if (video === dvd) {
print("video와 DVD는 동일한 인스턴스를 참조하고 있습니다.")
} else {
print("video와 DVD는 서로 다른 인스턴스를 참조하고 있습니다.")
}
// "video와 DVD는 서로 다른인스턴스를 참조하고 있습니다."
struct Resolution {
var width = 0
var heigth = 0
}
let hd = Resolution(width: 1920, heigth: 1080)
var cinema = hd
cinema.width = 2048
print("hd 인스턴스의 width 값은 \(hd.width)입니다.")
//"hd 인스턴스의 width 값은 1920입니다.\n"
print("cinema 인스턴스의 width 값은 \(cinema.width)입니다.")
//"cinema 인스턴스의 width 값은 2048입니다."
메모리의 공간을 할당 받는 객체
// 어떠한 인자도 받지 않고 단순히 Resolution 인스턴스만 생성
let defaultRes = Resolution()
// width와 height를 매개변수로 하여 Resolution 인스턴스 생성
let defaultRes = Resolution(width: 1024, height: 768)