Swift教程第二章(4)–Swift基础
方法、继承 ##方法
###实例方法
class Counter{
var count=0
func increment{
count++
}
func incrementBy(amount:Int){
count+=amount
}
func reset(){
count=0
}
func foo(#foo:Int){
count+=foo
}
//or
//func foo(foo _foo:Int){
// count+=_foo
//}
}
#
为外部参数名称
###self
self
为该实例本身
###类型方法(type methods) 声明累的类型方法,在方法的func前加上class;声明结构体、枚举的类型方法在func前加上static
class:
class SomeClass{
class func someTypeMethod(){
//to do something
}
}
SomeClass.someTypeMethod()
struct:
struct SomeClass{
static func someTypeMethod(){
//to do something
}
}
SomeClass.someTypeMethod()
##附属脚本
使用关键字subscript
,语法:
subscript(index:Int)->Int{
get{
//返回
}
set(newValue){
//赋值
}
}
🌰:)
struct TimeTable{
let mutiplier:Int
//只读型
subscript(index:Int)->Int{
return mutiplier*index
}
}
let threeTimesTable=TimeTable(mutiplier:3)
println("\(threeTimesTable[6])")
//输出 18
##继承
###父类
class Vehicle{
var numberOfWheels:Int
var maxPassengers:Int
func description()->String{
return "\(numberOfWheels)\(maxPassengers)"
}
//无参构造方法
init(){
numberOfWheels=0
maxPassengers=1
}
}
let someBehicle =Vehicle()
使用init
关键字声明类的构造方法
###子类生成
class Bicycle:Vehicle{
init(){
//使用父类的构造方法
super.init()
numberOfWheels=2
}
}
###重写(Overriding)
子类可以继承实例方法,类方法,属性,附属脚本或提供自己对以上类型的定制的实现使用关键字override
class Car:Vehicle{
var speed:Double=0.0
init{
super.init()
maxPassengers=5
numberOfWheels=4
}
override func description()->String{
return "\(maxPassengers)\(numberOfWheels)"
}
}
###防止重写
使用@final
关键字,例如:
- @final var
- @final func
- @final class func
- @final subscript
声明无法被集成的类使用@final class