Swift语言的扩展与协议(接口)

/*

类型转换

1.没有任何关系的两个类型之间的转换

2.继承链条里的向上与向下转型

*/

//第一种形式

let i = 3

let str = "\(i)"

let str2 = String(i)

//第二种形式

class Parent {

var p = 1

}

class Child:Parent {

var c = 2

}

//as是用来转换的

let c: Parent = Child()

let cc = c as? Child

cc?.c

if let ccc = c as?Child {

ccc.c

}

cc!.c

// is  是用来判断这个实例是否属于这个类

let result = c is Child

//let result2 = c is Parent

//AnyObject:表示任何类(class)的类型

//Any:任意类型,比如结构,枚举,类,函数等等

class A {

var aa: Int = 1

}

class B {

var bb: Int = 2

}

//在Swift没有顶级父类的说法(类似java的Object)

let data: [AnyObject] = [A(),A(),B(),B()];

var any1Count = 0

var any2Conut = 0

for item in data {

if item is A {

any1Count++

}else if item is B {

any2Conut++

}

if let ins = item as? A {

ins.aa

}

}

any1Count

any2Conut

let data1: [AnyObject] = [A(),A()];

let d = data1 as! [A]

d[1].aa

/*

扩展:

1.可以用来扩展类,结构,枚举,协议(即使这些你没有源代码,系统的都可以)

2.可以增加但不能重写已经存在的功能

***********************************

1. 可以添加实例计算属性与静态计算属性(比如给double类型添加一些表示长度单位的计算属性)

2.添加实例方法与类方法

3.提供新的初始化方法。

1.可以让别的类型作为新增init的参数

2.或其它的init选项

3.给值类型通过扩展添加init,也可以保留在原值类型中由编译器自动添加的各种init

4.增加下标

5.让已存在的类型实现一个协议

不能:

1. 不能添加存储属性(应该是对 init 的影响)

2. 不能给属性添加观察者

3. 不能给类添加特定的初始化器

4. 不能给类添加析构函数

*/

//给系统Int扩展方法m km

extension Int {

var m: Int {

return 1

}

var km: Int {

return self * 1000

}

}

let ii = 20

ii.m

ii.km

/*

协议:就是接口的含义

添加属性时:

1.只指定属性的名字与类型,不指定是否是存储与计算属性

2.只能在协议中用static修饰静态属性。但在实现类型可以用class 也可以用static

3.只读属性 var a: Int {get}

4.读写属性var b: Int {get set}

5.协议中的属性总是用var声明的 ,但是在实现时可以实现为let

添加方法时:

1.不需要大括号

2.支持可变长度参数

3.默认值不能在协议中指明

4.静态方法也用static修饰(在协议中)

5.协议中得方法可以添加mutating,在类中得实现中,可以不需要mutating,在值类型

中得实现中就必须加mutating

*/

时间: 2024-08-07 17:02:44

Swift语言的扩展与协议(接口)的相关文章

苹果新的编程语言 Swift 语言进阶(十四)--扩展

Swift语言的扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能.        扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名字.        扩展能够为已存在类型:     1)增加计算属性和计算静态属性:     2)定义新的实例方法和类型方法:     3)提... 请转移到此位置继续阅读,谢谢! 苹果新的编程语言 Swift 语言进阶(十四)--扩展 苹果新的编程语言 Swift 语

苹果新的编程语言 Swift 语言进阶(十五)--协议

协议定义了适合某个特定任务或功能需要的方法.属性和其它需求的一个蓝图.协议本身不提供这些需求的实现,它只是描述了一个任务或功能实现的蓝图.       协议与java 语言中的接口定义类似,都是描述了一个实现可以干什么,而本身却不包含任何实现.与接口不同的是swift语言定义的协议可以被一个类.结构.或者枚举采用,来提供协议规定需求的实际实现,而java 语言的接口只能被类实现.   ... 请麻烦转移到此位置阅读,谢谢! 苹果新的编程语言 Swift 语言进阶(十五)--协议 苹果新的编程语言

swift:入门知识之协议与扩展

swift中使用protocol声明一个接口 swift中类.枚举和结构体都可以实现接口 swift中类中的方法都可以修改成员变量的值 swift中结构体中的方法默认是不能修改成员变量的,添加mutating关键字后就可以修改了 swift中使用extension来为现有的类型添加功能.你可以使用扩展来给任意类型添加协议,甚至是你从外部库或者框架中导入的类型 具体举例如下: //声明一个ExampleProtocol协议,有一个成员变量和一个默认必须实现的方法 //声明一个协议 protocol

IOS开发语言Swift入门连载---扩展

IOS开发语言Swift入门连载-扩展 扩展就是向一个已有的类.结构体或枚举类型添加新功能(functionality).这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模).扩展和 Objective-C 中的分类(categories)类似.(不过与Objective-C不同的是,Swift 的扩展没有名字.) Swift中的扩展可以: 添加计算型属性和计算静态属性 定义实例方法和类型方法 提供新的构造器 定义下标 定义和使用新的嵌套类型 使一个已有类型符合某个协议 注意: 如

苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算

一 基本操作运算 1. 赋值操作 在Swift 中,可以使用赋值操作为一个常量或一个变量赋值,也可以使用多元组一次为多个常量或变量赋值. Swift 的赋值操作与其它语言最大的不同是赋值操作除了能够为变量或常量赋值外本身不能够返回值. 这个特征可以避免某些条件下赋值操作错误地用于相等比较操作. 如在C语言中,if (x = =y) 很容易误写作if (x = y) ,虽然逻辑结果不正确,但C语言的编译器却无法检查出这种情况,而Swift 语言却可以有效避免这种情况发生,因为 在Swift 中if

使用swift语言进行IOS应用开发

在Swift中能够直接使用Objective-C语言提供的api (包括系统框架与自己的定制代码),也能够在Objective-C中使用Swift提供的类和api ,还能够在一个工程中同时混合使用Swift 和Objective-C两种语言,两种语言之间能够互通和互用. 任意Objective-C的框架或C库(包括所有的Objective-C系统框架,例如Foundation.UIKit.SpriteKit以及系统提供的公共c库)作为模块被直接导入Swift 供Swift语言使用. 例如为了使用

苹果新的编程语言 Swift 语言进阶(一)--综述

Swift 是苹果开发和提供的供开发IOS 和OS X应用的一门新的语言.Swift语言基于C 和Objective-C语言,除了提供C 和Objective-C语言具有的所有语法功能外,为了编程方便和高效,Swift在语法上作了大量的优化和改进. Swift采用安全编程模式,具有许多先进的强大的功能 ,如动态运行时.编译动态进行类型检查.Closures.下标功能.自动引用计数.选项类型.通用类型和类型编译时推断.类型的扩展和嵌套.协议类型.功能和类型的通用化.操作符的定制和添加. Swift

Swift语言官方文档翻译(2)

A Swift Tour 按照惯例,我们一般学习一个新语言的时候,我们都习惯性的在屏幕上打印"Hello, World",在Swift中,你可以用如下一个单独语句实现 println("Hello,World") 如果你用C或者OC写过程序,那么上面的语句对于你来说是很熟悉的.在Swift中,这一行代码就是一个完整的程序,你不需要为了类似I/O或者String handling去导入一些jar包.全局变量将作为一个程序的入口点,所以你不需要main函数,你也不需要在

Swift语言入门之旅 (翻译自《The Swift Programming Language》电子书)

关于Swift Swift是为IOS和OSX应用制定的新编程语言,吸取C和Objective-C语言的精粹,但不损失与C语言的兼容性.Swift采用安全编程模型.加入了各种现代编程语言特性,使得该语言更易被掌握.更具扩展性,用起来更有趣.Swift语言的奠基石是已经成熟的.并为大家所喜爱的Cocoa和Cocoa Touch框架,新语言使大家可以尽情畅想新软件开发的机遇. Swift沉积了多年的研发成果,苹果公司为提供高效Swift语言编译器.调试器和基础架构打下了坚实基础.我们使用Automat