Online Swift Playground
//Classes (Reference type)
class Point: CustomStringConvertible{
var x:Int
var y:Int
init(x:Int, y:Int){
self.x = x
self.y = y
}
var description: String {
"Point [x: \(self.x), y: \(self.y)]"
}
}
var p1 = Point(x: 1, y: 1)
var p2 = p1 //refs on assignment
print(p1)
print(p2)
p1.x = 3; p1.y = 3
p2.x = 8; p2.y = 8
print(p1)
print(p2)
//equality
print(p1.x == p2.x) //values
print(p1 === p2) //pointers
extension Point {
func sub(p:Point){
self.x -= p.x
self.y -= p.y
}
}
p2.sub(p: p1)
print(p2)
//Properties, Methods
class Point{
//Properties
var x:Int
var y:Int
//Initializer - constructor
init(x:Int, y:Int) {
self.x = x
self.y = y
}
//Method
func add(p:Point){
self.x += p.x
self.y += p.y
}
}
var p1 = Point(x:5,y:5)
print(p1.x, p1.y)
var p2 = Point(x:5,y:5)
p1.add(p:p2)
print(p1.x, p1.y)
//Inheritance
class Character{
private var name:String = ""
internal init(name:String){
self.name = name
}
public func getName() -> String {
self.name
}
public func hi() -> String {
" "
}
}
final class Hero: Character{
private var health:Int = 0
public init(name:String, health:Int){
//super init after self init!!!
self.health = health
super.init(name: name)
}
public func getHealth() -> Int {
self.health
}
override func hi() -> String {
"Hi there"
}
}
let char = Hero(name:"Mike", health:3)
print("\(char.hi()), I'm \(char.getName()) with \(char.getHealth()) lives")
Комментариев нет:
Отправить комментарий