欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Swift从0开始学习 对象和类 day3

Swift从0开始学习 对象和类 day3

2025/2/26 2:02:40 来源:https://blog.csdn.net/weixin_45958328/article/details/143804663  浏览:    关键词:Swift从0开始学习 对象和类 day3
  • 类(Class) 是一种类型或模板,描述了对象的特征和行为。
  • 对象(Object) 是类的实例,实际的实体,拥有自己的数据。

新入门的教学都喜欢用“人”来举例为类,在这里我也用“人”吧
 

//"人“这个类
class person {let type = "person"var name : String?var age : Int?func setName(name : String) -> String {self.name = namereturn "成功设置名字为\(name)"}func eat() {print("吃饭行为")}func sleep() {print("睡觉行为")}
}//对象(实例)
//人的实例就具体一个人嘛,就let,总不能你还能设置为别人对吧
let you : person = person()
//名字设置为帅哥
you.setName(name: "帅哥")

这里使用person()来实例化,但是如果需要自定义呢,比如初始化的时候需要传点参数对吧,这时候就需要构造函数。
 

//"人“这个类
class person {let type = "person"var name : Stringvar age : Int//参数的默认值就是帅哥、18init(name: String, age: Int) {self.name = nameself.age = age}func setName(name : String) -> String {self.name = namereturn "成功设置名字为\(name)"}func eat() {print("吃饭行为")}func sleep() {print("睡觉行为")}
}//对象
let you : person = person(name: "帅哥", age: 18)
print("你是\(you.name),年龄\(you.age)")
//输出:你是帅哥,年龄18

如果需要某个属性初始化就自带默认值的话,以身高tall为例,人均180。示例如下:
 


//"人“这个类
class person {let type = "person"var name : Stringvar age : Intvar tall : CGFloat?//参数的默认值就是帅哥、18init(name: String, age: Int, tall: CGFloat? = 180.0) {self.name = nameself.age = ageself.tall = tall}func setName(name : String) -> String {self.name = namereturn "成功设置名字为\(name)"}func eat() {print("吃饭行为")}func sleep() {print("睡觉行为")}
}//对象
let you : person = person(name: "帅哥", age: 18)
print("你是\(you.name),年龄\(you.age)," + "身高\(you.tall ?? 0.0)")
//输出:你是帅哥,年龄18,身高180.0

但是有些人行为是不一样的,通过实现person的子类来定义这些不一样的人。

class SpecialMan: person {override func eat() {print("顿顿帝王蟹")}override func sleep() {print("打坐不睡觉")}
}let you = SpecialMan()
you.eat()
//打印"顿顿帝王蟹"

子类如果要重写父类的方法的话,需要用 override 标记——如果没有添加 override 就重写父类方法的话编译器会报错。编译器同样会检测 override 标记的方法是否确实在父类中。

同时对应类中的属性getter,setter方法也要会自定义。使用 getter 和 setter 的计算属性。示例:

class SquareShape {var sideLength: Double = 0.0 //边长var name : Stringinit(sideLength: Double, name: String) {self.sideLength = sideLengthself.name = name}//周长的get和set的方法var perimeter: Double {get {return 4.0 * sideLength}set {sideLength = newValue / 4.0}}
}//初始化边长为8的正方形
var square = SquareShape(sideLength: 8, name: "正方形")
print(square.perimeter)//打印32
//周长设置为16
square.perimeter = 16
print(square.sideLength)//打印4

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词