import Foundation
class Engine{
var name:String
// 클래스 초기화 함수
init(initName:String){
self.name = initName
}
init(){
self.name = "Normal Engine"
}
func startEngine(){
print ("Start Engine!")
}
func stopEngine(){
print("Stop Engine")
}
}
var myEngine = Engine(initName:"8기통")
class Tire{
let name:String
init(initName:String){
name = initName
}
}
var myTire = Tire(initName: "신발보다 싼 타이어")
class Car{
var engine:Engine
var tire:Tire
init(){
engine = Engine(initName: "8기통 엔진!")
tire = Tire(initName: "금호 타이어")
}
func Start() -> Bool{
engine.startEngine()
return true
}
}
let car = Car()
car.engine.name
car.tire.name
let result = car.Start()
print(myEngine.name + " " + myTire.name)
class SuperEngine: Engine{
var year:String // 저장 형 Property
var info:String{ // 연산 형 Property
get {
return name + year
}
set {
let index = newValue.endIndex.advancedBy(-4) // newValue 는 setter 의 인자로 들어오는 값을 담는 변수
year = newValue.substringFromIndex(index)
name = newValue.substringToIndex(index)
}
}
override init() {
year = "0000"
super.init()
name = "Super Engine"
// super.name = "Super Engine"
// self.name = "Super Engine"
}
func speedUp(){
print("Speed Up!")
}
}
car.engine = SuperEngine()
car.engine.name
// 타입 캐스팅
var superEngine = car.engine as! SuperEngine
superEngine.speedUp()
superEngine.info
superEngine.info = "Hyper Engine2016"
superEngine.info
superEngine.name
superEngine.year
댓글 없음:
댓글 쓰기