您的位置:首页 > 移动开发 > Swift

14.类的基本定义,类型推断、安全和类型转换

2016-09-08 14:25 253 查看
/*类的基本定义Swift中的结构体和类非常相似, 但是又有不同之处类是具有相同属性和方法的抽象格式:class 类名称 { 类的属性和方法}*/class Rect { var width:Double = 0.0 var height:Double = 0.0 func show() -> Void{ print("width = \(width) height = \(height)") }}// 类没有逐一构造器//var r1 = Rect(width: 10.0, height: 10.0)var r1 = Rect()r1.show()var r2 = r1r2.show()// 类是引用类型, 结构体之间的赋值其实是将r2指向了r1的存储控件, 所以他们是两个只想同一块存储空间, 修改其中一个会影响到另外一个r1.width = 99r1.show()r2.show()

/*恒等运算符, 用于判断是否是同一个实例, 也就是是否指向同一块存储空间=== !==*/var r3 = Rect()if r1 === r3{ print("指向同一块存储空间")}

第二、类的定义

import UIKit

class Student : NSObject { // 1.属性 // 1> 存储属性 // 注意一:在开发中,如果是对象或者结构体,在没有赋值的情况下通常定义为可选类型 var name : String? // 注意二:在开发中,如果是基本属性类型,比如int类型,在没有赋值的情况下,通常直接给一个默认的值0 var age : Int = 0 var chineseScore : Double = 0.0 var mathScore : Double = 0.0 // 2> 计算属性 /* var average : Double { get { return (chineseScore + mathScore) * 0.5 } // 较少写set方法(默认情况下,set方法中有一个系统变量:newValue.新传入的值就再newValue中) set { self.average = newValue } } */ // 如果计算属性是一个只读属性,则可以省略get{} var average : Double { return (chineseScore + mathScore) * 0.5 } // 3> (了解)类属性 // 注意: // * 类属性用static修饰 // * 类属性只能通过类来访问 static var courseCount = 0}
// 创建类的对象let stu : Student = Student()stu.name = "yz"stu.age = 11stu.chineseScore = 61.5stu.mathScore = 97.8
if let tempName = stu.name { print("name is \(stu.name!), age is \(stu.age), 语文成绩:\(stu.chineseScore), 数学成绩:\(stu.mathScore)")}
// 获取yz老师的平均成绩print(stu.average)
Student.courseCount = 2print(Student.courseCount)

class Person : NSObject { var name : String? var age : Int = 0 var height : Double = 0.0}
let p = Person()
// 注意:赋值不是调用set方法,直接拿到属性给属性赋值p.name = "why"p.age = 18p.height = 1.88

第三、类型转换
/*Swift不允许隐式类型转换, 但可以使用显示类型转换(强制类型转换)OC:int intValue = 10;double doubleValue = (double)intValue;
Swift:*/var intValue:Int = 10var doubleValue:DoubledoubleValue = Double(intValue)// 注意:Double()并不会修改intValue的值, 而是通过intValue的值生成一个临时的值赋值给doubleValueprint(intValue)print(doubleValue)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息