protocol ItoString { func toString()->String } class KFZ:ItoString{ var name:String="" var preis:Double=0.0 init(name:String, preis:Double){ self.name=name self.preis=preis } func toString()->String{ return "KFZ toString: \(name) \(preis)" } func getPreis() -> Double { return preis } // toString var description :String { return "KFZ: \(name) \(preis)" } } // KFZ class PKW:KFZ { var ps:Int32=0 init(name:String, preis:Double, ps:Int32){ self.ps=ps super.init(name: name,preis:preis) } } class LKW:KFZ { var ladevolumen:Double=0.0 init(name:String, preis:Double, ladevolumen:Double){ self.ladevolumen=ladevolumen super.init(name: name,preis:preis) } } var liste:[KFZ]=[] //oder var liste=[KFZ]() liste.append( PKW(name:"Opel Vectra", preis:16300.22, ps:123 )) liste.append( PKW(name:"Opel Adam", preis:13300.0,ps:165 )) liste.append( LKW(name:"Man 2000", preis:83300, ladevolumen: 1234.6 )) for kfz:KFZ in liste { print(kfz) }