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()//f1与f2是并列的,能够调用外部的变量和方法
}
}
//实例都有本身的一份拷贝
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:2,b1:3,c1:4)//f1中a,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")
}//实例方法能够被重写
}