하나의 큰 코드블록
클래스 안에서 정의된 변수, 상수를 프로퍼티라고 부른다.
클래스 안에서 정의된 함수를 메서드라고 부른다.
상속할 수 있다는 점에서 구조체와 구분된다. ※상속 : 속성 값을 물려주는 것. 즉 프로퍼티와 메서드를 물려주는것.
클래스는 이니셜라이저를 통해 초기값을 설정할 수 있다.
프로퍼티에 기본 값이 없는 경우 이니셜라이저를 필수로 구현해야한다. 그렇지 않을 경우 에러가 발생한다.
정의 예시
struct Resolution { //구조체
var width = 0
var height = 0
}
class VideoMode {
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name: String?
}
Resolution이라는 구조체를 생성한다.
이 구조체에는 너비와 높이라는 저장 프로퍼티가 선언되었다.
videoMode라는 이름의 클래스를 생성한다.
{}안에 프로퍼티가 선언된다.
resolution은
예시 코드
class Car{
let model: String
let price: Int
init(model: String, price: Int) {
self.model = model
self.price = price
}
}
var momCar = Car(model: "kia", price: 10000000)
Car라는 클래스를 정의한다.
Car는 model과 price라는 프로퍼티를 갖는다.
※ self는 인스턴스 자신을 가리킨다.
momCar는 Car클래스에서 선언된 프로퍼티 즉, model, price를 갖는다.
Car라는 클래스에서 momCar라는 객체를 인스턴스화 한 것이다.
Car 틀에서 momCar이라는 빵을 찍어낸 것.
내가 만들어본 다른 예시
class SevenTeen { //클래스
let height : Int
let weight : Int
let name : String
init(height: Int = 170, weight: Int = 65, name: String = "홍길동") {
self.height = height
self.weight = weight
self.name = name
}
func introduce(){
print("안녕하세요.\(name)입니다. 키는 \(height)이고 몸무게는 \(weight)입니다.")
}
}
var hoshi : SevenTeen = SevenTeen(height: 180, weight: 70, name: "호시")
var sCoups : SevenTeen = SevenTeen(height: 190, weight: 80, name: "에스쿱스")
hoshi.introduce()
sCoups.introduce()