Swift面向对象基础(中)——Swift中的方法

学习来自《极客学院》

1、定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数

2、方法要么属于该类型本身,要么是该类型的一个实例

3、不能独立执行方法,执行方法必须使用类型或实例作为调用者

注意:枚举、结构体中方法使用static修饰,类中用class修饰,都属于类型方法,否则的话属于实例方法

 1 import Foundation
 2
 3 class SomeClass{
 4     func test(){
 5         println("====test 方法 ======")
 6     }
 7     class func bar(#msg:String){
 8         println("====bar 方法 ======,传入的参数为:\(msg)")
 9     }
10 }
11 //创建实例
12 var sc = SomeClass()
13 //将sc的test方法分离成函数,前面类型用()->()表示函数类型,后面的取方法不能带上()
14 var f1:()->() = sc.test//如果带上括号就是调用实例的方法
15 //将sc的bar方法分离成函数
16 var f2:(String)->Void = SomeClass.bar
17
18 //然后使用f1()就相当于调用的就是sc.test()
19 f1()
20 //然后使用f2()就相当于调用的就是SomeClass.bar(msg:)
21 f2("hello")
22
23
24 //************方法的外部形参名*************//
25 class Person{
26     var name:String
27     init(name:String){
28         self.name = name
29     }
30     func eat(food:String, _ drink:String ,cigarette:String){
31         println("\(self.name)吃着\(food)喝着\(drink)抽着\(cigarette)")
32     }
33 }
34 var p = Person(name: "Tom")
35 p.eat("烤鸭", "啤酒", cigarette: "雪茄")
36 /*Swift默认为除第一个参数外部添加了外部参数名,与局部参数名一样,如果不需要的话,则用_下划线的方式去掉,添加了外部参数名,不是添加了#号*/
37
38 /************值类型的可变方法*************/
39 struct JKRect {
40     var x:Int
41     var y:Int
42     var width:Int
43     var height:Int
44     mutating func moveByX(x:Int,y:Int){
45         self.x += x
46         self.y += y
47     }
48 }
49 var rect = JKRect(x: 20, y: 12, width: 200, height: 300)
50 rect.moveByX(100, y: 90)
51 println("矩形的左上角的x坐标为:\(rect.x),y坐标为\(rect.y)")
52 /*注意:常量类型的结构体,枚举时不可变的*/

运行结果是:

时间: 2024-10-12 21:15:21

Swift面向对象基础(中)——Swift中的方法的相关文章

Swift面向对象基础(上)——Swift中的枚举

Swift中枚举 学习笔记来自<极客学院> 1 import Foundation 2 3 /**********1*Swift定义枚举的语法格式*************/ 4 /* 5 enum 枚举名 { 6 使用case关键字列出所有枚举值 7 枚举的其他成员 8 } 9 */ 10 //定义枚举 11 enum Season{ 12 case Spring 13 case Summer 14 case Fall 15 case Winter 16 } 17 //使用一个case列举所

Swift面向对象基础(上)——Swift中的类和结构体(下)

学习来自<极客学院> 1 import Foundation 2 3 class User { 4 var name:String 5 var age:Int 6 init(name:String,age:Int){ 7 self.age = age 8 self.name = name 9 } 10 } 11 var u1 = User(name:"何杨",age:23) 12 var u2 = User(name:"何杨",age:23) 13 pr

Swift面向对象基础(上)——Swift中的类和结构体(上)

学习来自<极客学院> 1 import Foundation 2 3 //1.定义类和结构体 4 /* 5 [修饰符]calss 类名{ 6 零到多个构造器 7 零到多个属性 8 零到多个方法 9 零到多个下标 10 } 11 修饰符可以是:private public internal final 12 */ 13 14 /*定义结构体 15 [修饰符]struct 结构体名{ 16 17 } 18 修饰符可以是:private public internal 19 */ 20 21 /*

Swift语言中的属性,方法,下标脚本以及继承

从这篇章节起,Swift编程语言指南大部分的重要内容在于概念,代码并不是太多.理解Swift的面向对象理念,语法以及类结构,构造析构过程对于很好的应用Swift语言将会有比较大的帮助. 属性 存储属性 存储属性通常是那些可以通过直接赋值,或者直接访问成员能够获得的属性类型. 它有些要注意的地方: 若一个结构体被声明为常量,则子属性无法被修改了.在Objective-C中,我们总是无法修改结构体的子属性,但是swift却可以,不过这种情况是个例外,当你存储型属性是个结构体并且是个常量,那你就不要再

Swift使用WKWebView在iOS应用中调用Web的方法详解

这篇文章主要介绍了Swift使用WKWebView在iOS应用中调用Web的方法详解,使用WKWebView便等于使用和Safari中相同的JavaScript解释器,用来替代过去的UIWebView,需要的朋友可以参考下 自从iOS8开始,Apple引入了WKWebView欲代替UIWebView.相比而言,WKWebView消耗内从更少,功能也更加强大.让我们来看看WKWebView怎么使用吧! 0.初始化(1)首先需要引入WebKit库 复制代码代码如下: #import <WebKit/

在一个项目中同时使用Swift和Objective-C代码混合编程的方法

主要介绍了在一个项目中同时使用Swift和Objective-C代码的方法,在一个工程中同时使用Swift和Objective-C混合语言编程的方法. Swift 与 Objective-C 的兼容能力使你可以在同一个工程中同时使用两种语言.你可以用这种叫做 mix and match 的特性来开发基于混合语言的应用,可以用 Swfit 的最新特性实现应用的一部分功能,并无缝地并入已有的 Objective-C 的代码中. Mix and Match 概述 Objective-C 和 Swift

《Swift Programming Language 》——Swift中如何使用继承(Inheritance)

一个类可以继承(inherit)另一个类的方法(methods),属性(property)和其它特性.当一个类继承其它类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclass).在 Swift 中,继承是区分「类」与其它类型的一个基本特征. 在 Swift 中,类可以调用和访问超类的方法,属性和附属脚本(subscripts),并且可以重写(override)这些方法,属性和附属脚本来优化或修改它们的行为.Swift 会检查你的重写定义在超类中是否有匹配的定义,以此确

《Swift Programming Language 》——Swift中怎样使用继承(Inheritance)

一个类能够继承(inherit)还有一个类的方法(methods),属性(property)和其他特性.当一个类继承其他类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclass).在 Swift 中,继承是区分「类」与其他类型的一个基本特征. 在 Swift 中,类能够调用和訪问超类的方法,属性和附属脚本(subscripts),而且能够重写(override)这些方法,属性和附属脚本来优化或改动它们的行为.Swift 会检查你的重写定义在超类中是否有匹配的定义,以此

Swift / Objective_C / Xcode实际开发中可能遇到的小功能小技巧总结

一:Swift3.0为视图添加旋转动画,效果如下: 代码实现: //创建动画 let anim = CABasicAnimation(keyPath: "transform.rotation") //设置相关属性 anim.toValue = 2 * M_PI anim.repeatCount = MAXFLOAT anim.duration = 15 //完成之后不移除,testView被释放,动画随着一起删除 anim.isRemovedOnCompletion = false t