10--swift之方法

1.方法简介swift

方法是和类,结构体,枚举相关联的函数,放到内部的叫方法,外面的叫函数,与oc不一样,在swift中,类,结构体,枚举都能定义方法。ide

swift方法能够分为实例方法和类型方法,实例方法必须经过实例才能访问,类型方法能够经过类名称就可以访问。函数

2.实例方法spa

func f2(){//叫函数orm

print("-----")it

}class

struct Point {变量

var x:Int方法

var y:Intim

func f1(){//叫方法

print("------")

}

}

//实例

class SomeClass {

var a1:Int!

var s1:String!

func set(a:Int,s:String){

a1 = a

s1 = s

}

func compute(){

let a = [2,3,5,4]

for e in a{

print(e)

}

}


}

var s = SomeClass()

s.set(20, s: "tom")

print(s.a1)

print(s.s1)

s.compute()

//实例

class MyClass {

var v:Int = 100

func f1(){

print("f1")


}

func f2(){

print(v)

f1()//f1f2是并列的,能够调用外部的变量和方法

}

}

//实例都有本身的一份拷贝

class Cat {

var name: String!

var age: Int!

func show(){

print("\(name),\(age)")

}

}

var c1 = Cat()

c1.name = "jale"

c1.age = 2

c1.show()

var c2 = Cat()

c2.name = "kate"

c2.age = 4

c2.show()

//实例

class Dog {

var name: String!

var age: Int!

func eat(){

print("-----")

}

func play(){

print("play")

}

func sleep(){

print("sleep")


}

func all(){

eat()

play()

sleep()

}

func show(){

print("\(name),\(age)")

}

}

var d1 = Dog()

d1.name = "hua hua"

d1.age = 3

var d2 = Dog()

d2.name = "xiao hei"

d2.age = 5

d1.show()

d1.all()

d2.show()

d2.all()

局部参数和外部参数

//name1,age1是内部参数。set方法第一个默认没有外部参数

class Animal {

var name:String!

var age:Int!

func set(name1:String,age1:Int){

name = name1

age = age1


}

func f1(a1 a:Int,b1 b:Int,c1 c:Int ){

let sum = a + b +c

print(sum)

}

func f2(a:Int,_ b: Int,_ c:Int){

let sum = a + b + c

print(sum)

}

func show(){

print("\(name),\(age)")

}

}

var a = Animal()

a.set("hua hua", age1: 3)//在调用时age1是外部参数名,跟内部参数名同样,第一个默认没有外部参数

a.show()

a.f1(a1:2b1:3,c1:4)//f1a,b,c都是内部参数,而a1,b1,c1都是外部参数

a.f2(1,2,3)//参数名前加上下划线,调用时名称能够省略

2.实例——self

class Animal {

var name: String!

var age: Int!

func set(name1: String,age1:Int){

//        name = name1

//        age = age1

self.name = name1

self.age = age1

}

func show(){

print("\(name),\(age)")

}

}

var cat = Animal()


cat.set("nua nua", age1: 3)

cat.show()

var dog = Animal()


dog.set("tom", age1: 4)

dog.show()

3.在实例方法中修改值类型

结构体和枚举是值类型,通常值类型的属性不能在他的实例方法中被修改

可是,能够选择变异(mutating),而后能够从内部改变他的属性

struct Point {

var x:Int!

var y:Int!

//mutating

mutating func set(x1: Int,y1: Int){

//x = x1

//y = y1

self = Point(x: x1,y: y1)

}

}

3.类型方法



//静态方法只能调用静态方法和变量,实例方法能够经过类名称直接调用静态方法和变量

class MyClass {

var i1: Int!

var s1: String!

static var c1: String!

static func f1(){

print("f1..")


}


//f2能够被子类重写

class func f2() {

print("f2..")

}

func f3(){

print("f3")

}


}

MyClass.f1()//能够经过类名称直接调用

class SubClass:MyClass{

override class func f2(){

print("f...f")

}//class 方法能够被重写,但必须加上class

override func f3(){

print("f111")

}//实例方法能够被重写

}

相关文章
相关标签/搜索