import UIKit
//1. 类的定义
class Person{
//如何属性为值类型,则初始化为空值
// 如何属性是对象类型,则初始化为nil值
var name : String = ""
var age : Int = 0
var view : UIView?
}
let p = Person()
p.name = "flower"
p.age = 10
//2. 类的属性
//存储属性:存储实例的常量和变量
//计算属性:通过某种方式计算出来的属性
//类属性:与整个类自身相关的属性
class Student{
var name : String = ""
var age : Int = 0
var mathScore : Double = 0.0
var chineseScore : Double = 0.0
var average : Double{
return (mathScore + chineseScore) * 0.5
}
static var courseCount : Int = 0
}
let stu = Student()
stu.age = 10
stu.name = "floser"
stu.mathScore = 100
stu.average
Student.courseCount = 10
//3. 属性监听
class animal{
var name : String = ""{
// willSet{
// print("即将发生改变")
// }
// didSet{
// print("已经发生改变")
// }
// willSet{
// print(newValue)
// print("即将发生改变")
// }
// didSet{
// print(oldValue)
// print("已经发生改变")
// }
willSet(newName){
print(newName)
print("即将发生改变")
}
didSet(oldName){
print(oldName)
print("已经发生改变")
}
}
}
let a = animal()
a.name = "dog"
//4.类的构造函数
//4.1
class Cat{
var name : String = ""
var age : Int = 0
//在swift中,如果在对象函数中,用到成员属性,self. 可以省略
// 但是,如果在函数中,有和成员属性重名的局部变量,那么self.不能省略
// 如果有自定的构造函数,那么会将系统提供的成员函数覆盖掉
init() {
}
init(name : String, age : Int) {
self.name = name
self.age = age
}
init(dict : Dictionary<String,Any>) {
if let name = dict["name"] as? String{
self.name = name
}
if let age = dict["age"] as? Int {
self.age = age
}
}
}
let c = Cat(dict: ["name" : "huahua", "age" : 10, "height" : 1.8])
//4.2 使用kvc: 需满足的条件
//必须继承NSObject
//必须在构造函数中,先调用super.init()
//调用setValuesForKeys
//如何字典中没有一个key所对应的属性,需要重写set
class Dog : NSObject{
var name : String = ""
var age : Int = 0
var height : Double = 0.0
init(dict : [String : Any]) {
super.init()
setValuesForKeys(dict)
}
override func setValue(_ value: Any?, forKey key: String) {
}
}
let d = Dog(dict: ["name" : "huahua", "age" : 10, "height" : 1.8])
print(d.name)
//5. 析构函数
class Rabbit{
var name : String = ""
var age : Int = 0
deinit {
print("Rabbit -- deinit")
}
}
var r : Rabbit? = Rabbit()
r = nil
swift 类的创建
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Swift中用类名字符串创建类(用到了命名空间) OC中可以直接通过类名的字符串转换成对应的类来操作,但是Swif...
- 写项目遇到过一次奇葩的问题,swift调用OC创建的类debug状态下没有问题,release时编译报错。 最后的...