Swift 协议

Swift中的协议 在object-c也称之为协议,但是在其他语言中可能被称之为接口Interface(比如说java中)还有可能被称之为纯虚函数。实际上都是一个意思。

协议主要用来规定统一的方法和属性名称,但是不实现任何功能。只有实现了协议的类才需要实现他的功能。

协议说通俗一点可以这样理解。比如USB接口在生活中很常见,但是大家有没有注意到,USB其实出现的很早,但是后来出现的一些USB带动的小风扇,甚至于一些电饭煲都可以使用USB来通电,那么请问,USB很明显比这些小风扇,电饭煲生产时间要早很多,难道设计生产USB的人有未卜先知的能力,早就知道我们会生产USB带动的风扇吗?

其实不是的,这里就可以类比我们的协议,其实我生产USB只需要规定你有什么方法,有什么属性就行,至于方法里面该实现什么功能,我不需要规定,当你要使用USB的时候你再去规定,他是要输出多大的电压,还是要传输数据还是要干什么。我只规定你有哪几个方法,只要你实现了我的这几个方法就行,至于功能是什么我不管。这样就可以满足我风扇也可以使用USB,电饭煲也可以使用USB,甚至于以后我灯泡,电脑什么都要使用USB。

下面我们来看一下Swift中的协议是怎么定义的

protocol MyProtocol{
    //协议内容

    //比如,此处我们规定一个方法
    func myProtocolFunc()
}

我们可以看到 规定的方法是没有实现的 值规定了方法名。

我们看一个实现这个协议的类

class MyTestProtocol: MyProtocol {
    func myProtocolFunc() {
        println("这是协议的方法")
    }
}

我们可以看到如果一个类要实现某一个协议(或者多个协议),这个类可以这样定义

class  类名:协议名1,协议名2{

这样我们会发现这个和继承写法类似,只不过继承是但继承 而实现协议会有多个

如果即有继承又有协议那么该如何做了?

其实很多简单 我们只需要吧继承写在最前面即可

class 类名:继承类名,协议1,协议2{

按照这种方式即可

苹果开发群 :414319235  欢迎加入  欢迎讨论问题

苹果开发群 :414319235  欢迎加入  欢迎讨论问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-10 23:30:56

Swift 协议的相关文章

Swift 协议(protocol)和扩展(extension)

协议 Swift 使用protocol定义协议: 1 protocol ExampleProtocol { 2 var simpleDescription: String { get } 3 mutating func adjust () 4 } 类型.枚举和结构都可以实现(adopt)协议: 1 class SimpleClass: ExampleProtocol { 2 var simpleDescription: String = "A very simple class." v

Swift协议(Protocol)

协议是为方法.属性等定义一套规范,没有具体的实现. 协议能够被类.结构体等具体实现(或遵守). protocol SomeProtocol { // protocoldefinition goes here } struct SomeStructure: FirstProtocol, AnotherProtocol { // structure definition goes here} class SomeClass: SomeSuperclass, FirstProtocol, Anothe

学习Swift -- 协议(上)

协议(上) 协议是Swift非常重要的部分,协议规定了用来实现某一特定工作或者功能所必需的方法和属性.类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能.任意能够满足协议要求的类型被称为遵循这个协议. protocol SomeProtocol { // 协议内容 } struct SomeStruct: SomeProtocol { // 结构体和枚举都可以遵循协议,写法以 ": 协议名"为准 多个协议名以逗号分隔 } class SomeClass { }

6.Swift协议|扩展|访问权限|异常调试|类型转换|运算函数|ARC|类类型初试化器|值类型初始化器

1. 协议(Protocol):与OC之间唯一不同的是Swift中的协议不管是属性还时方法全部是必须实现的 /** protocol*/ protocol FullNamed { /** 计算属性申明,只读的计算属性*/ var fullName:String { get } } /** 实现协议*/ struct Person:FullNamed { /** 实现协议  可以把计算属性实现为存储属性,更改其本身的性质*/ var fullName: String = "abc" }

swift协议_010-swift协议protocol

//: Playground - noun: a place where people can play import UIKit //-----协议-------// //协议:声明一组属性和方法,由协议的签订者来实现协议方法. //1.协议的声明 protocol WXHLProtocol { //声明一组方法 func doHomework() func dontLate() //3.Swift的协议中可以声明属性 var money : Int {set get} var classNu

swift 协议传值的实现

首先呢说下结构 一个ViewController 一个ModelViewController 在ModelViewController中定义了一个协议 这个逻辑 从第一个界面进入第二个界面  从第二个界面回到第二个界面并通过协议传值回到第一个界面 打印输出值 ModelViewController.swift protocol lwkDelegate {//定义协议 func changeString(newString:String) } 在这个ModelViewControler类中实现一些

Swift中的协议

协议: 1.Swift协议用于定义多个类型应该遵守的规范 2.协议定义了一种规范, 不提供任何实现 3.协议统一了属性名, 方法, 下标, 但是协议并不提供任何实现 4.语法格式: [修饰符] protocol 协议名: 父协议1, 父协议2, ... { // 协议内容 } 修饰符:可以省略, 也可以是private, internal, public之一 协议名应与类名采用相同的命名规则 一个协议可以有多个直接父协议, 但协议只能继承协议, 不能继承类 协议的内容: 指定协议实现者必须提供的

iOS学习之Swift 关联类型

有时候我认为类型理论是故意弄的很复杂,以及所有的那些函数式编程追随者都只是胡说八道,仿佛他们理解了其中的含义.真的吗?你有一篇5000 字的博客是写关于插入随机类型理论概念的吗?毫无疑问的没有.a)为什么有人会关心这些以及b)通过这个高大上的概念能帮我们解决什么问题?我想把你装进麻布袋里,扔进河里,并且砸进一个坑 里. 我们在讨论什么?当然,关联类型. 当我第一次看到 Swift 范型的实现时, 关联类型的用法的出现,让我感到很奇怪. 在这篇文章,我将通过类型概念和一些实践经验,这几乎都是我用自

Swift开发黑科技:还在争论MVC和MVVM?现在你应该试试MVP!

本人原创,长文慎入,但此文绝对不会让你失望. WWDC2015已经过去一段时间了,我发现自从更新了Swift2.0到现在的Swift2.2,我只是跟着版本更新了所有需要更新的语法,依旧自以为是很熟练的Swift程序员.刚入职比较闲碰巧看到了1月份的中国首届Swift大会上大牛们的分享,突然陷入了思考,有了很多新想法又重温了几遍WWDC2015大会的视频,尤其是408和414号视频!!!我下定决心重构自己的代码,下面步入正题,结合Swift开发大会的一些分享,让我们谈谈架构. 通过一个简单的Dem