swift基础2

来源:互联网 发布:c语言 字符串统计函数 编辑:程序博客网 时间:2024/06/12 00:41

三、面向对象编程

1、类

2、结构体

3、枚举



类、结构体、枚举都支持面向对象特性,包括:属性、下标、方法、构造、析构、继承、扩展、协议



1、类

类是swift中唯一的引用类型;

只有类的实例才可以成为对象;


1)、属性

除了以上几种属性外,还可以使用lazy实现延迟存储属性

解释:

a)、延迟存储属性,只在第一次访问它时,它才会初始化,减少内存占用

b)、只读计算属性:计算属性,如果只有getter访问器,没有setter访问器,不能被赋值


2)、下标

关键字:subscript


3)、构造、析构

构造器的作用是初始化存储属性


需要一个初始化方法,对let属性进行初始化,或者把变量类型的实例存储属性后面加?


a)、默认构造器

 

b)、构造器重载


c)、便利构造器、指定构造器

构造器代理:通过调用其他构造器来实现实例的部分构造的过程,即一个构造器调用另一个构造器的过程。

便利构造器:发生在同一类内部,构造器前面加上convenience,实现即可调用其他的构造器,见上例。

指定构造器:发生在继承时,在子类构造过程中,要先调用父类构造器初始化父类的存储属性,见上例。


原则:

l   指定构造器必须调用其直接父类的指定构造器

l   便利构造器必须调用同一类中定义的其他构造器

l   便利构造器必须最终以调用一个指定构造器结束

 

d)、析构


 

4)、继承

三种面向对象结构中,只有类可以继承,子类可以继承父类的:

a)、属性

b)、方法

c)、下标

 

如果父类不希望子类重写一个属性或者方法,可以加前缀final,这样子类重写的话,会报错:Instance method override a 'final' instance method

5)、协议


6)、扩展

可以为已有的类型(类、结构体、枚举、基本数据类型等)扩展新功能,对类而言,可以扩展:

a)、实例计算属性、静态计算属性

b)、实例方法、静态方法

c)、便利构造器

d)、下标



2、结构体

1)、属性

2)、下标

5)、协议

6)、扩展

与类相同用法,全部支持

只有一点区别:

静态协议属性、静态协议方法前面的class改为static


3)、构造、析构

4)、继承

与类不同,不支持

 


3、枚举

1)、属性

与类、结构体相比,不支持实例存储属性



a)、成员值默认不是整数类型,跟OC不一样

b)、可以为枚举指定原始值类型

当指定枚举的原始值类型后,可以使用rawValue获取一个实例的原始值,原始值=变量名或者被赋的其他值,如60、63行

c)、case 后面可以没有break,但是不会向下执行下一条case.

d)、switch分支语句中,可以没有default分支,如下例:



3)、构造、析构

4)、继承

与类不同,不支持


5)、协议

6)、扩展

与类相同用法,全部支持

只有一点区别:

 枚举不支持实例存储属性,所以也不支持实例扩展属性和实例协议属性


0 0
原创粉丝点击