class RCPoint : Printable { var x: Int var y: Int init(x: Int = 0, y: Int = 0) { self.x = x self.y = y } convenience init(p: RCPoint) { self.init(x:p.x, y:p.y) } var description: String { return "" } } class RCCircle : RCPoint { var r: Int init(p: RCPoint, r: Int = 0) { self.r = r super.init(x:p.x, y:p.y) } init(x: Int = 0, y: Int = 0, r: Int = 0) { self.r = r super.init(x:x, y:y) } convenience init(c: RCCircle) { self.init(x:c.x, y:c.y, r:c.r) } override var description: String { return "" } } println(RCPoint()) println(RCPoint(x:3)) println(RCPoint(x:3, y:4)) println(RCCircle()) println(RCCircle(x:3)) println(RCCircle(x:3, y:4)) println(RCCircle(x:3, y:4, r:7)) let p = RCPoint(x:1, y:2) println(RCCircle(p:p)) println(RCCircle(p:p, r:7)) println(p.x) // 1 p.x = 8 println(p.x) // 8