Swift 面向对象 3: 类的基本认识
2016-08-05 本文已影响0人
前进的苏辰
1.类基本格式
class 类名{
成员变量
成员方法
}
2.使用时的注意事项:
(1)类中的成员变量必须初始化(可以直接在定义变量的时候赋值、自定义构造方法赋值)
(2)类中的实例方法可以直接修改类内的成员变量
(3)类提供的构造方法是没有参数的
(4)static修饰的成员变量叫做类型变量,只能通过类名调用
(5)类是引用类型,而结构体是值类型
(6)类可以被继承,而结构体不能被继承
(7)swift中没有父/根类(和OC NSObject不同)
(8)"=== / !=="表示两个对象的相等/不相等, 使用==会报错
var person1 = Person(firstname: "dahuang", lastname: "li")
var person2 = person1
print(person1 === person2) // true
class Person {
var name: String = ""
var age: Int = 0
//static修饰的成员变量叫做类型变量
//类型变量只能通过类名调用
staticvar height: Double = 0.0
func eat() {
age = 20
print("\(name)正在吃吃吃")
}
func sleep() {
print("睡")
}
staticfunc hitDouDou() {
print("\(Person.height)打豆豆")
}
}
//定义对象
var xiaoPerson = Person()
xiaoPerson.name = "小明"
xiaoPerson.age = 10
Person.height = 1.50
xiaoPerson.eat()
xiaoPerson.sleep()
Person.hitDouDou()
//定义myPoint类成员变量是x,y 实现自定义构造方法对成员变量赋值
class myPoint {
var x: Int
var y: Int
//实现自定义的构造方法
init(x: Int,y: Int) {
self.x = x
self.y = y
}
}
//类是引用类型,而结构体是值类型
var p = myPoint(x: 10, y: 20)
var p1 = p
print(p1.x,p1.y)
p1.x = 10000
print(p.x)
struct Size {
var width: Int
var height: Int
}
var s = Size(width: 230, height: 998)
var s1 = s
s1.width = 1
print(s.width,s1.width)
```
#3.延迟属性
1.当一个成员变量初始化时耗时较长或者这个变量在此时不使用,那么这个变量就可以延迟初始化
2.用lazy修饰后就不会初始化,只有调用时才会初始化
import Foundation
//当一个成员变量初始化的时候耗时很长或者这个变量在此时不使用那么这个变量就可以延迟初始化
//什么时候使用什么时候初始化(只有单独调用的使用才初始化)
var count = 0
class Read {
var bookName = ""
init() {
bookName = "乔布斯传"
//模拟线程
NSThread.sleepForTimeInterval(5)
print("\(count)页\(bookName)书已读完")
}
}
class Reader {
var name: String = ""
var age: Int = 0
//创建阅读类对象
lazyvar reading: Read = Read.init()
//开始阅读
func startReading() {
print("姓名为\(name)年龄为\(age)的孩子正在阅读")
count = 1000
}
}
var xiaoYellow = Reader()
xiaoYellow.name = "xiaoYellow"
xiaoYellow.age = 10
xiaoYellow.startReading()
let result = xiaoYellow.reading