在Swift语言中,提供了全面的面向对象的支持。首先支持类定义,类中可以定义各种类型的方法和属性,可以通过设置访问修饰符来控制哪些成员和方法是对外界可见的,哪些是不可见的,实现对类的封装。
同时也可以继承一个类或者多个类,实现类的继承性。还有一个叫协议的概念,等同于别的编程语言中的接口。协议与类有相同也有不同。
- 相同之处:都是可以继承扩展的,协议本身也可以继承别的协议。
- 不同之处:协议不支持属性,方法也只能声明,不实现。协议独立来看,也不能实例化成某个对象。也就是说,协议需要某个具体的类去继承,这叫实现协议。实现协议之后,就叫某个类遵守或者符合某个协议。
一、编写第一个类
类是某一类事物的抽象,通过抽象定义了一件事物的特点,通常来说,类定义了事物的属性和行为。从程序上讲,类时生成将来所要用的具体对象的代码模板。
class Person {
//类型属性、方法
}
/*在Swift语言中,Person类的声明和其他语言一样,以关键字class声明,类的名称首字母一般建议大写,它可以是任意数字、字母、下划线组合,不过不能以数字开头。*/
尽管其主体是空的,没有任何实际的用处,我们已经完成了类的最简单的定义,定义一个类,定义了一种新的数据类型,这种类我们叫做空类,空类也是可以被调用的。
var p = Person()
println(p)
上面代码中,P就是对象,是Person类的具体化,类是对象的模板,定义一个类,可以生成无数个对象。生成对象的过程叫类的实例化
1、属性
属性就是类所表示的现实对象的特性在代码中的反映,比如现实中有学生这个身份类别,学长的属性有姓名、班级、籍贯,把相应的内容对应到类代码即可:
class Student{
var name:String = ""
var classno:Int = 0
var from:String = ""
}
class Student{
var name:String = "" //变量属性
var classno:Int = 0
var from:String = ""
let country:String = "中国" //常量属性
}
var student = Student()
student.name = "HTX"
student.classno = 1
student.from = "NanTong"
println("\(student.name) \(student.classno) \(student.from)")
//输出:HTX 1 NanTong
在Swift语言中,属性的类型可以分为两种:存储属性和计算属性
存储属性就是用来表示类的一个特性。计算数学本身并不直接存储特性,提供的是一个计算后的结果。
1.1、存储属性
正如变量一样,属性也分为变量属性和常量属性,都叫存储属性,并且也分别用关键字var 和关键字let来