美文网首页门外汉自学Swift
20170619基础知识-协议

20170619基础知识-协议

作者: 花间提壶蛋大厨 | 来源:发表于2017-06-19 21:57 被阅读0次

1、协议,抽象类,java中的接口,只规定方法名、参数列表、返回值,不给出具体的实现。

类、结构体、枚举,都可以声明遵从一个或多个协议,并提供该协议所要求的属性和方法的具体实现。

2、定义协议

protocol 协议名 {

//协议内容

}

3、遵从协议

类型(类、结构体、枚举) 类型名 :父类, 协议1,协议2 {

//遵从协议内容

}

如果一个类继承父类的同时,也遵从协议,父类必须放在最前面

4、协议可以要求遵从这,提供实例属性、静态属性、实例方法、静态方法

4.1 实例方法

protocolFigure {

funconDraw()

}

classRectangle :Figure{

funconDraw() {

print("绘制矩形...")

}

}

letrect1 =Rectangle()

rect1.onDraw()

4.2静态方法

方法前加ststic,结构体、枚举要用static,类要用class或static,class可以被子类继承

protocolAccount {

staticfuncinterestBy(amount:Double) ->Double

}

classClassImp :Account{

classfuncinterestBy(amount:Double) ->Double{

return0.0668* amount

}

}

4.3可变方法

由于结构体、枚举不能修改属性,需要用mutating来定义可变方法

5、协议属性,无论是存储属性还是计算属性,只要满足协议就可以

5.1协议实例属性

protocolPerson {

varfirstName :String{getset}可读写

varlastName :String{getset}

varfullName :String{get}只读

}

5.2协议静态属性

属性前面加static,结构体、枚举要用static,类要用class或static

6、面向协议编程

能够是面向对象类型的定义与实现分离,协议作为数据类型暴露给使用者,使其不关系具体的实现细节,从而提供代码的可扩展性和可复用性

协议类型:协议可以出现在任意允许其他数据类型出现的地方

作为函数、方法、构造函数中的参数类型、返回值类型

作为常量、变量、属性的类型

作为数组、字典、Set的元素类型

协议作为类型使用,不仅可以用as、as?、as!进行类型转换,还能用is判断是否遵从了某个协议

7、协议的继承:一个协议可以集成若干个协议,并可以在继承基础上增加新需求,可以多重继承,class不能多重继承

协议的扩展:协议扩展,本质上还是协议,增加了一些方法和属性

协议的组合:协议1 & 协议2... 临时的类型,要求参数同事遵从协议1和协议2

扩展中遵从协议:struct A  extension A :协议1

相关文章

  • 20170619基础知识-协议

    1、协议,抽象类,java中的接口,只规定方法名、参数列表、返回值,不给出具体的实现。 类、结构体、枚举,都可以声...

  • 20170619基础知识-泛型

    1、泛型:在程序代码中,定义一些可变的部分,在运行的时候指定 func isEquals(a:T,b:T) -> ...

  • 文章笔记

    TCP/IP协议(一)网络基础知识 TCP/IP协议(二)tcp/ip基础知识 字符编码常识及问题解析 代码命名的...

  • HTTPS协议

    HTTPS协议详解(一):HTTPS基础知识HTTPS协议详解(二):TLS/SSL工作原理HTTPS协议详解(三...

  • HTTP协议笔记

    HTTP协议笔记 标签(空格分隔): HTTP,TCP/IP [TOC] 1.网络协议基础知识 TCP/IP协议族...

  • PHP面试题集合

    互联网基础知识: TCP/IP协议TCP(传输控制协议)和IP(网际协议 ) 简称TCP/IPIP协议:是将多个包...

  • LDAP 基础知识

    LDAP 基础知识 目录LDAP 基础知识--简介--协议概览--目录结构架构(Schema)------对象类(...

  • 知乎信息结构速记

    (Updated: 20170619) User / OrgProfileFollowUser / OrgTopi...

  • Android网络中篇:Http与Https详解

    一、基础知识 1、TCP/IP协议族 IP协议:网络层协议,保证了计算机之间可以发送和接收数据。 TCP协议:传输...

  • 关于ajax

    关于ajax 1. 基础知识 网络协议: 通讯的标准 应用层协议: http, https, ftp, ... h...

网友评论

    本文标题:20170619基础知识-协议

    本文链接:https://www.haomeiwen.com/subject/gapnqxtx.html