学习swift面向协议编程、类和结构体

Protocol ,协议,就是一组属性、方法的定义,相当于约定好定义什么,是怎么样的。如果某一个类型要遵守这么协议,那么它需要实现这个协议所定义的所有内容。

编程编程,面向对象编程,我们听面向对象编程听得很多,其实面向协议我还是头一回听到。

swift 是一门面向协议(Protocol-oriented Programming)开发的语言,核心就是面向协议编程,而面向协议的核心是抽象(abstraction)和简化(simplicity)。

C++和JAVA都是面向对象编程,他们的核心是类,各种继承,而在swift中,大多数类可以用协议和结构体替代类。

我简单说一下类和结构体

类定义:

[修饰符] class 类名
{
    //构造器
    //属性
    //方法
    //下标
}

结构体定义:

[修饰符] struct 结构体名
{
    //构造器
    //属性
    //方法
    //下标
}

修饰符可以是 private | internal | public、类可以用final,结构体不支持继承而不能用final修饰,或者省略这些修饰符。类和结构体定义通常包含构造器、属性和方法。

类:

类可以单继承,可定义属性(properties)保存值,定义方法(methods)以提供功能,类的构造器是创建类实例的途径,如果定义类时没有定义构造器,则系统会为该类提供一个默认无参数的构造器。可进行扩展(extension)

结构体:

定义属性(property)用以存储值, 定义方法(method)用以提供功能, 定义初始化方法设置其初始状态可遵循协议(conforms to protocols), 定义下标(subscripts)以便使用下标存取属性值

结构(Structure)以下特性是结构所不具备的:

继承使得类可以继承另一个类的特性, 在运行时可通过类型转换(Type casting)检查和解释某个类实例的类型, 析构方法(Deinitializer)可使某个类实例释放(Free up)其被赋予的任何资源, 引用计数(Reference counting)允许对某个类实例的多个引用

如果定义结构体时没有定义构造器,则系统会为该类提供两个构造器,一个无参数构造器,一个初始化所有存储属性的构造器。

区别:

可以说类和结构体十分相似,他们的主要区别在于

1.类支持继承而结构体不能

2.结构体不支持定义析构器

3.结构体是值类型,类是引用类型

协议:

协议定义

protocol 协议名
{ 
     // 属性、方法定义
}

协议可以继承一个到多个其他协议(多继承),语法和类继承相似

protocol 协议名: 继承协议名1, 继承协议名2
{
 // 协议定义
}

swift中协议的作用相当于其他语言的接口。


参考文献:

疯狂swift讲义(李刚)

潘老师讲义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值