接着上面一篇说的内容:

一 继承:

苹果继承与水果,苹果是水果的子类,则苹果是一种特殊的水果;这就是继承的关系,这个我们学OC的时候相信也都理解了,就不再描述定义了,下面的就叫继承:

class ZXMessageCell: UITableViewCell {    

    // 自定义的cell继承与UITableviewCell 

}

继承了父类,你也就能使用父类的属性方法,这些我们学OC的时候也都清楚。看下面几点,

1:重写父类的方法

2:重写父类的属性

3:重写属性观察者    上面的 1 2 3 只要记住一点,在重写的方法,属性,观察者等等前面添加 override 就可以   具体的例子 Swift继承

4:防止重写  final 关键字可以用于修饰 类、属性、方法、下标。使用 final 修饰的类不能被继承,派生子类,使用 final 修饰的属性不能被重写,使用 final 修饰的方法、下标不能被重写。

二:类的构造与析构

由于类的继承,子类不仅包括了自己定义的存储属性,还包括从父类继承得到的存储属性,类的所有存储属性,包括所有的继承父类的属性,在构造的过程中必须设置初始值,因此类的构造过程相对的比较复杂。

与构造器相反的是,Swift 允许为类(枚举,结构体不允许)定义析构器,在实例销毁之前,系统就会自动的调用该实例的析构器。

说实话,就单单这一部分的内容,要说清楚里面的原理,可能得写一本书啦。。当然这书也肯定不是我写,没那能力,毕竟菜。哈哈~

下面给大家的学习链接,希望给大家有帮助:

Swift的构造和析构过程

Swift 构造过程+析构过程(十三)

Swift的构造过程

三:多态

Swift引用变量有两个类型,一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,编译器只认每个变量的编译时的类型;运行时类型由实际赋给该变量的实例决定,如果编译时的类型和运行时的类型不一致,就可能出现所谓的多态(Polymorphism)

上面是多态的概念,它的使用和例子我以前总结写过,把以前博客的链接给大家。

Swift 2.2 多态和强制转换

四:嵌套

这个就一句话带过了,在Swift中允许在一个类型的内部去嵌套定义另一个类型。

五:扩展

这是个重点,扩展就像我们OC中用的类别或者说分类一样,都是同一个东西,但Swift的扩展功能要去强大的多。先把扩展提供的功能列举出来;

1:添加类型存储属性

2:添加实例计算属性和类型计算属性

3:添加实例方法和类型方法

4:添加新的构造器,而且新添加的构造器不影响原来的构造器

5:添加下标

6:定义和使用新的嵌套类型

7:是一个已有类型遵守一个或者多个协议

顺便提一下拓展的创建方法,其实挺简单的,就是新建一个.Swift文件就OK了,还有以前我们在OC中使用的PCH文件,也是可以用这个.Swift文件代替了的。你在这个.Swift文件当中定义了的常量和OC中PCH头文件的功能是完全一样的。

看下面的代码例子,下面是给UIView扩展了两个方法:

// MARK: - UIView的扩展方法
extension UIView{ func containsSubView(subView:UIView) -> Bool { for view in self.subviews { if view .isEqual(subView) { return true
}
}
return false
} func containsSubViewOfClassType(aClass:AnyClass) -> Bool { for view in self.subviews { if view .isMemberOfClass(aClass) { return true
}
}
return false
}

下面是给大家的学习链接,都写的很不错,都有作者的大把心血在里面的,致敬!

Swift学习笔记(十一)--拓展和协议

Swift协议和扩展

六  协议:

Swift 的协议的作用类似于 OC中的协议,其实OC的协议你理解的话,这里也就没多少需要在强加去解释的。协议的基本的用法我以前的博客当中也有说过  Swift 2.2 协议和代理

顺便指出,可选协议这一点,其实也挺简单的,你在这些属性、方法、下标等想让它是可选的,让它加上 optional 这个关键字就行了。可选的,看字面意思大家也可想而知了,并不一定是遵守了这个协议之后必须要实现的方法和属性就叫可选的。

七:封装

封装是面向对象的额三大特性之一,两外两个是继承和多态。它指的是将实例的状态信息,实现细节隐藏在实例内部,不允许外部程序直接访问实例的内部信息,只能通过该类型所提供的公开的方法来访问和操作实例的内部信息。

Swift 面向对象解析(二)的更多相关文章

  1. Swift 面向对象解析(一)

    面向对象总体概括: Swift 不仅能够面向过程编程,也能够面向对象编程(OOP).面向对象其实就是“以对象为核心”,把我们的客观世界想着是由一个个对象组成的,面向对象编程则为对象提供了属性和方法,属 ...

  2. Python 基础 面向对象之二 三大特性

    Python 基础 面向对象之二 三大特性 上一篇主要介绍了Python中,面向对象的类和对象的定义及实例的简单应用,本篇继续接着上篇来谈,在这一篇中我们重点要谈及的内容有:Python 类的成员.成 ...

  3. C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码

    最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌 ...

  4. Java生成与解析二维码

    1.下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar, 其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免 ...

  5. java 生成和解析二维码

    public class QRCode { /** * 解析二维码(QRCode) * @param imgPath * @return */ public static String decoder ...

  6. java代码生成二维码以及解析二维码

    package com.test; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedI ...

  7. iOS开发Swift篇—(二)变量和常量

    iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...

  8. asp.net C#生成和解析二维码代码

    类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: using ThoughtWorks.QRCode.Codec;using Thought ...

  9. Fixflow引擎解析(二)(模型) - BPMN2.0读写

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

随机推荐

  1. Android面试题随笔1

    1.如何让一个应用在手机上产生两个或多个图标? 在清单文件中的activity节点下配置如下:[5,7行代码] <activity android:name=".MainActivit ...

  2. Tyvj P3276

    题目链接:http://www.tyvj.cn/p/3276 这题是一个动归题,一直没有想出动归的做法,后来求教别人之后写了一个记忆化搜索,只有出题者又给我提供了DP的解法,下面我来写写DP的写法 设 ...

  3. iOS8推送消息的快速回复处理

    http://blog.csdn.net/yujianxiang666/article/details/35260135 iOS8拥有了全新的通知中心,有全新的通知机制.当屏幕顶部收到推送时只需要往下 ...

  4. Unknown/unsupported storage engine: InnoDB

    症状:无法启动mysql,在“mysql数据库目录/主机名.err”日志文件中报错 Unknown/unsupported storage engine: InnoDB原因:MySQL5.5.8 GA ...

  5. Python学习【第十二篇】模块(2)

    序列化 1.什么是python序列化? 把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling 序列化就是将python的数据类型转换成字符串 反序列化就是将字符串转换成 ...

  6. ubuntu内核的编译安装

    原创声明:转载请注明出处. 一.操作环境: 1.ubuntu版本 2.linux原有内核版本 3.要安装的linux内核版本 linux-3.16.39 二.新内核的编译和安装 1.首先下载linux ...

  7. gridview里item是textView、Button单击事件相应,以及按下效果的取去除

    1.响应事件的区别: gridview的item是textView的时候,gridview的itemonclick事件可以正常相应,但是换了Button后不能,原因如下: public class B ...

  8. scrollview嵌套gridview滑动问题

    在开发过程总遇到ScrollView嵌套GridView,由于这两种控件都带有滚动条,当他们碰到一起的时候便会出问题,问题是gridview不滚动,并且只显示两行,为此看了官方文档,谷歌回答滚动里面没 ...

  9. iOS 之 支付

    现在广泛应用的是微信支付和支付宝支付,这两种应该覆盖了几乎所有网上消费的用户,所以我们就用这两种支付方式就够了.2014年用过支付宝的网民购物占比有94%. 1. iOS 之 微信支付 2. iOS ...

  10. iOS 之 UITextView

    _lableAssess = [[UITextView alloc] init]; [_lableAssess setFrame:CGRectMake(left2, top2, width2, siz ...