Created
June 14, 2015 07:13
-
-
Save jemygraw/d03397c87a5f97cc19e1 to your computer and use it in GitHub Desktop.
basic class definition and function override
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//define a class | |
class Shape{ | |
var name :String | |
var numberOfSlides = 0 | |
let pi :Float = 3.14 | |
init(name :String){ | |
self.name=name | |
} | |
deinit{ | |
//something you want to do before the class object is dead | |
} | |
func simpleDesc() -> String{ | |
return "A shape called \(self.name) with \(self.numberOfSlides) slides" | |
} | |
func circleArea(radius:Float) -> Float{ | |
return self.pi * radius * radius | |
} | |
func rectangleArea(width :Float, height :Float) -> Float{ | |
return width * height | |
} | |
} | |
var c1=Shape(name:"circle number 1") | |
c1.circleArea(10) | |
var r1=Shape(name:"rectange number 1") | |
r1.numberOfSlides=4 | |
var r1Area=r1.rectangleArea(100, height: 12) | |
println(r1.simpleDesc()) | |
println("r1 area \(r1Area)") | |
//overwrite a class | |
class RawShape{ | |
let pi :Float = 3.14 | |
var name :String | |
init(name:String){ | |
self.name=name | |
} | |
func area()->Float{ | |
return 0 | |
} | |
func desc()->String{ | |
return "this is a shape called \(name)" | |
} | |
} | |
class Circle : RawShape{ | |
var radius :Float | |
init(radius :Float, name :String){ | |
self.radius=radius | |
super.init(name:name) | |
} | |
override func area() -> Float { | |
return pi * radius * radius | |
} | |
override func desc() -> String { | |
return "this is cicle called \(self.name)" | |
} | |
} | |
var c2 = Circle(radius: 10, name: "CIR1") | |
println(c2.area()) | |
println(c2.desc()) | |
c2.name="CIR BIG" | |
c2.radius=135 | |
println(c2.area()) | |
println(c2.desc()) | |
class Rectange : RawShape { | |
var width :Float | |
var height :Float | |
init(width :Float, height: Float, name :String){ | |
self.width=width | |
self.height=height | |
super.init(name: name) | |
} | |
var areaVal :Float{ | |
get{return self.width * self.height} | |
//explicit name for newValue | |
set(newAreaVal){ | |
self.areaVal = newAreaVal | |
} | |
} | |
override func area()->Float{ | |
return self.width * self.height | |
} | |
} | |
var r2 = Rectange(width:10,height:20,name:"BIG RECT") | |
println(r2.area()) | |
println(r2.areaVal) | |
println(r2.desc()) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment