/*

类属性的介绍

Swift中类的属性有多种

1.存储属性:存储示例的常量和变量

2.计算属性:通过某种方式计算出来的属性

3.类属性:与整个类自身相关的属性

存储属性

存储属性是最简单的属性,它作为类实例的一部分,用于存储常量和变量

可以给存储属性提供一个默认值,也可以在初始化方法中对其进行初始化

*/

class Student{

//存储属性

var name:String = ""

var mathScore:Double=0.0

var chineseScore:Double=0.0

//计算属性-->只读属性

var averageScore:Double{

return (chineseScore+mathScore)*0.5

}

//类属性:和整个类相关的属性,并且是通过类名进行访问

static var courseCount:Int=0

//    //给类扩充函数

//    func getAverageScore()->Double {

//        return (chineseScore+mathScore)*0.5

//    }

}

let stu=Student()

stu.name="jack"

stu.mathScore=80

stu.chineseScore=90

Student.courseCount=2

print(stu.averageScore)

/*

监听类属性的改变

*/

class Person{

var name:String = "aa" {

//选择其中之一即可

//监听属性即将发生改变,还没有改变

willSet{

print("属性即将改变\(name)")

}

//监听属性已经发生改变,已经发生改变

didSet{

print("属性发生改变\(name)")

}

}

var age:Int = 0 {//选择其中之一即可

//监听属性即将发生改变,还没有改变

willSet(newAge2222){

print(newAge2222)

print("属性即将改变\(age)")

}

//监听属性已经发生改变,已经发生改变

didSet(oldAge1){

print(oldAge1)

print("属性发生改变\(age)")

}

}

}

let p = Person()

p.name="jack"

p.age=100

/*

类的构造函数

*/

class Person2{

var name:String = ""

var age:Int = 0

init(dict:[String:Any]) {

if let name = dict["name"] as? String {

self.name=name

}

if let age = dict["age"] as? Int {

self.age=age

}

}

}

let p2 = Person2(dict: ["name":"jack","age":18])

print(p2.name,p2.age)

/*

使用KVC

1.必须继承自NSObject

2.必须在构造函数中,先调用suepr.init()

3.调用setValuesForKeys

4.如果字典中某一个key没有对应的属性,则需要重写setValue forUndefinedKey方法

*/

class Person3:NSObject{

@objc var name:String = ""

@objc var age:Int = 0

// MARK:- 自定义构造函数

override init() {

}

init(dict:[String:Any]) {

super.init()

setValuesForKeys(dict)

}

override func setValue(_ value: Any?, forUndefinedKey key: String) {

}

//    override func setValue(_ value: Any?, forKey key: String) {

//        //print(key)

//    }

//重写析构函数,监听对象的销毁

deinit{

print("对象销毁")

}

}

let p3 = Person3(dict: ["name":"jack22","age":28,"phoneNum":"+86 110"])

print(p3.name,p3.age)

Swift 类的使用class的更多相关文章

  1. Swift互用性: 使用Objective-C特性编写Swift类(Swift 2.0版)-b

    本节包括内容: 继承Objective-C的类(Inheriting from Objective-C Classes) 采用协议(Adopting Protocols) 编写构造器和析构器(Writ ...

  2. Swift学习笔记 - OC中关于NSClassFromString获取不到Swift类的解决方案

    在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案: 问题的发现过程 UIViewController ...

  3. swift类、继承、接口

    import Foundation class Hello{ var _name:String?="swift global" init(name:String){ //定义类中有 ...

  4. swift 类和结构体

    1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...

  5. Swift 类构造器的使用

    Swift 中构造器需要遵循的规则还是很多的, 总结一下, 有以下规则: 调用相关 指定构造器必须调用它直接父类的指定构造器方法. 便利构造器必须调用同一个类中定义的其它初始化方法. 便利构造器在最后 ...

  6. swift 类 与 结构体

    这两天突然有人问我  swift里面 类和 结构体  有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift  语言 ...

  7. Swift类与结构体

    类和结构体有很多共性: 定义属性存储数据 定义方法执行功能处理 定义下标,通过下标访问他们的值 初始化他们的状态 通过扩展(Extension)扩展其功能 遵守协议(Protocol),协议提供一种特 ...

  8. Swift: 类与结构体

    对比类与结构体 类与结构体有许多的相同点,它们都可以: 定义属性来存储值: 定义方法来提供功能: 定义下标操作: 定义初始化函数: 扩展它的默认的实现: 遵从协议: 类有一些额外的能力,但是结构体没有 ...

  9. Swift—类的继承-备

    Swift中的继承只能发生在类上,不能发生在枚举和结构体上.一个类可以继承另一个类的方法.属性.下标等特征,当一个类继承其他类时,继承类叫子类,被继承类叫父类(或超类).子类继承父类后,可以重写父类的 ...

  10. Swift类和结构体定义-备

    Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { 定义类的成员 } struct 结构体名 { ...

随机推荐

  1. 学习Javascript的8张思维导图

    分别归类为: javascript变量 javascript运算符 javascript数组 javascript流程语句 javascript字符串函数 javascript函数基础 javascr ...

  2. 题解 P4949 【最短距离】

    吼题啊 刚开始看上去又以为是LCT啥子的. 后来发现,TM是个图. 然后果断准备放弃,突然发现只有N个点N条边. woc,这不就一个基环树上树链剖分吗... 关于基环树问题,相信大家都一定很有经验了吧 ...

  3. Laplacian Mesh Editing 拉普拉斯形变(待回学校更新)

    前言 因为实验需要用到拉普拉斯形变,但找了好久找到一个非常适合入门的资料.再此记录下我的学习过程,也算搬运翻译过来. Introduction / Basic Laplacian Mesh Repre ...

  4. Centos7 VNC远程桌面服务安装配置

    1.服务器版本 CentOS Linux release 7.7.1908 (Core) 首先系统安装了GUI界面 # ln -sf /lib/systemd/system/graphical.tar ...

  5. pyhton的返回值

    a=input() input()函数返回的是字符‘2’ a=bin(2) bin函数返回的是二进制形式的字符串'0b10' type()判断类型 bin()转化成二进制 int(a,2)可以强制把字 ...

  6. Wincc V7.3SE安装截图

    打开某个工程出错,能力所限,找不到问题,没能解决

  7. Jquery选择器大全汇总

    一.选择器 1.三个基本选择器,$("#ID") .$(".className")  .$("tagName") 2.其他选择器 //htm ...

  8. hibernate部分源码解析and解决工作上关于hibernate的一个问题例子(包含oracle中新建表为何列名全转为大写且通过hibernate取数时如何不用再次遍历将列名(key)值转为小写)

    最近在研究系统启动时将数据加载到内存非常耗时,想着是否有办法优化!经过日志打印测试发现查询时间(查询时间:将数据库数据查询到系统中并转为List<Map>或List<*.Class& ...

  9. 【转载】Jmeter关联-正则表达式提取器

            今天研发同事提供了一个验证token的接口,要验证token的正确性,现在将整个过程做如下记录: 场景:验证token的正确性 原理:首先用户登录成功后,会在Response head ...

  10. HTML学习第五天

    HTML学习第五天 今天学HTML的实体.背景.布局 HTML布局的标签基本被淘汰frameset就被淘汰了,只有iframe依然存活,但是iframe可以被CSS给代替.下面就是一个练习的程序 &l ...