Swift-构造方法
来源:互联网 发布:江苏十一选五遗漏数据 编辑:程序博客网 时间:2024/05/17 00:17
构造方法
/* 1、构造方法 构造方法主要作用:实例对象的内容的初始化(给存储属性设置初始值) 隐式调用 Swift要求类或者结构体中的存储属性在对象构造完毕后要有初始值 构造方法的语法: init(参数列表) { 初始化代码 } */print("1、构造方法")/* 2、带有缺省值的构造方法 构造完一个对象之后,要求对象中的所有非lazy的存储属性必须要有初始值 *//* 3、带有参数的构造方法(构造方法的内部参数默认也作为外部参数) */class MyPoint { //class(类)// var x:Int = 0//存储属性 var x:Int var y:Int func descript() -> String{ return("x=\(x),y=\(y)") } //构造方法的内部参数默认也作为外部参数 init(_ x:Int,y:Int) { self.x = x self.y = y }// //构造方法语句// init() {// y = 0// }}//构造一个对象:(1)给对象分配内存(2)初始化这块内存(构造方法)var p = MyPoint(10,y:5)print("\(p.descript())")//显式调用/* 4、常量存储属性与构造方法 常量存储属性只能在构造方法中被修改,其他任何时候都不可以修改 *//* 5、可选属性与构造方法(可选存储属性可以再构造方法中不进行初始化,nil) */print("\n5、可选属性与构造方法")class Card { let cardNumber:UInt32 init(number:UInt32) { self.cardNumber = number }}//可选存储属性可以再构造方法中不进行初始化,nilclass Human { let name:String var age:Int var card:Card? //构造方法的内部参数默认也作为外部参数 init(name:String,age:Int){ self.name = name self.age = age// self.card = Card(number:4554445) }}var person = Human(name:"zhang",age:10)print("name=\(person.name),age=\(person.age)")person.age = 5//person.name = "san"/* 6、结构体的构造方法总结 */print("\n6、结构体的构造方法总结")struct Rect { //struct(结构体) var width:Double var height:Double// init(width:Double,height:Double) {// self.width = width// self.height = height// } //若果我们自定义了相应的构造方法,那么系统提供的结构体逐一成员构造方法将会失效 init() { width = 0 height = 0 }}//针对结构体,系统会提供一个成员逐一构造器(类中没有成员逐一构造器)var rect = Rect()/* 7、值类型的构造器代理(构造方法之间的相互调用) 构造方法可以调用其他构造方法来完成实例的构造,称之为构造器代理 好处:减少构造方法之间的代码重复 */print("\n7、值类型的构造器代理")struct Segment { var origin:Double var end:Double init(origin:Double,end:Double) { self.origin = origin self.end = end } init() {// origin = 0// end = 0 self.init(origin:0,end:10) } init(origin:Double,length:Double) {// self.origin = origin// self.end = origin + length self.init(origin:0,end:origin+length) } func description() -> String { return "\(origin),\(end)" }}var seg1 = Segment(origin:0,end:10)var seg2 = Segment()var seg3 = Segment(origin:0,length:5)print(seg1.description())print(seg2.description())print(seg3.description())/* 8、闭包或者全局函数设置存储属性的缺省值 */print("\n8、闭包或者全局函数设置存储属性的缺省值")func getValue() -> Int{ print("全局函数") return 10}class TestCalss{ //x是存储属性 var x:Int = { () -> Int in print("初始化开始") sleep(5) return 10 }()//此处加括号执行闭包 //通过全局函数设置缺省值 var z:Int = getValue() //通过类方法设置缺省值(必须是类方法,不能是普通方法) var p:Int = TestCalss.classGetValue() class func classGetValue() -> Int { print("类方法") return 10 } //y是计算属性 var y:Int{ return x < 100 ? x : 100 } init() { print("初始化完毕") }}var obj = TestCalss()
2 0
- Swift-构造方法
- Swift-指定构造方法和便利构造方法
- Swift UIImageView 构造方法
- Swift中的构造方法
- swift UIImageView构造方法
- swift构造方法
- swift构造方法
- swift构造方法
- Swift--12构造方法
- Swift中的构造方法
- 13.9 Swift必须构造方法
- Swift 基础学习(指定构造方法和便利构造方法)
- 13.1 Swift指定构造方法和便利构造方法解析
- Swift:面向对象(继承与构造方法)
- Swift 基础学习(构造方法初印象)
- swift: 方法的重载/重写/KVC构造
- 12.1 Swift构造方法初印象
- 12.3 Swift带有参数的构造方法
- Tomcat 8熵池阻塞变慢详解
- 事件委派
- 非CS专业小硕的机器学习/数据挖掘岗位秋招经验
- Resources.Load();路径和必须用GameObject
- Mysql学习笔记 --- int字段长度详解
- Swift-构造方法
- Javaweb微专业第九篇-----类与对象
- rabbitmq 实现延迟队列的两种方式
- 【ThinkPHP】thinkphp快捷方法总结
- 当使用Native Libraries时如何减小apk的大小
- Shader 渲染队列、ZWrite和ZTest
- Objective-C - 多态, 方法的重写, 多态和继承
- postgresql使用pg_dump备份与恢复
- 关于MAC 系统下停止进程,结束任务