(作业)Swift类的属性与方法
来源:互联网 发布:传奇h5修改数据库教程 编辑:程序博客网 时间:2024/06/16 06:15
话不多说,先贴作业要求
因为Person类需要一个枚举类型的gender,所以先定义枚举
//性别的枚举enum Gender: Int { case male //男性 case female //女性 case unknow //未知 //重载>操作符,方便后面排序使用 static func >(lhs: Gender, rhs: Gender) -> Bool { return lhs.rawValue < rhs.rawValue }}
然后定义Person类
//人类class Person: CustomStringConvertible { var firstName: String //姓 var lastName: String //名 var age: Int //年龄 var gender: Gender //性别 var fullName: String { //全名 get { return firstName + lastName } } //构造方法 init(firstName: String, lastName: String, age: Int, gender: Gender) { self.firstName = firstName self.lastName = lastName self.age = age self.gender = gender } convenience init(firstName: String, age: Int, gender: Gender) { self.init(firstName: firstName, lastName: "", age: age, gender: gender) } convenience init(firstName: String) { self.init(firstName: firstName, age: 0, gender: Gender.unknow) } required convenience init() { self.init(firstName: "") } //重载== static func ==(lhs: Person, rhs: Person) -> Bool { return lhs.fullName == rhs.fullName && lhs.age == rhs.age && lhs.gender == rhs.gender } //重载!= static func !=(lhs: Person, rhs: Person) -> Bool { return !(lhs == rhs) } //实现CustomStringConvertible协议中的计算属性,可以使用print直接输出对象内容 var description: String { return "fullName: \(self.fullName), age: \(self.age), gender: \(self.gender)" }}var p1 = Person(firstName: "张")var p2 = Person(firstName: "张", age: 20, gender: .male)print(p1) //输出fullName: 张, age: 0, gender: maleprint(p1 == p2) //输出falseprint(p1 != p2) //输出true
然后定义Teacher类
//教师类class Teacher: Person { var title: String //标题 //构造方法 init(title: String, firstName: String, lastName: String, age: Int, gender: Gender) { self.title = title super.init(firstName: firstName, lastName: lastName, age: age, gender: gender) } init(title: String) { self.title = title super.init(firstName: "", lastName: "", age: 0, gender: .unknow) } convenience required init() { self.init(title: "") } //重写父类的计算属性 override var description: String { return "title: \(self.title), fullName: \(self.fullName), age: \(self.age), gender: \(self.gender)" }}var t1 = Teacher(title: "hello")print(t1) //输出title: hello, fullName: , age: 0, gender: unknow
再定义Student类
//学生类class Student: Person { var stuNo: Int //学号 //构造方法 init(stuNo: Int, firstName: String, lastName: String, age: Int, gender: Gender) { self.stuNo = stuNo super.init(firstName: firstName, lastName: lastName, age: age, gender: gender) } init(stuNo: Int) { self.stuNo = stuNo super.init(firstName: "", lastName: "", age: 0, gender: Gender.unknow) } required convenience init() { self.init(stuNo: 0) } //重写父类的计算属性 override var description: String { return "stuNo: \(self.stuNo), fullName: \(self.fullName), age: \(self.age), gender: \(self.gender)" }}var s1 = Student(stuNo: 2015110101)print(s1) //输出stuNo: 2015110101, fullName: , age: 0, gender: unknow
最后按要求创建数组和字典并进行相应的操作
//初始化一个空的Person数组var array = [Person]()//生成5个Person对象for i in 1...5 { let temp = Person(firstName: "张", lastName: "\(i)", age: 20, gender: .male) array.append(temp)}//生成3个Teacher对象for i in 1...3 { let temp = Teacher(title: "hello", firstName: "李", lastName: "\(i)", age: 21, gender: .female) array.append(temp)}//生成4个Student对象for i in 1..<5 { let temp = Student(stuNo: 2015110100 + i, firstName: "王", lastName: "\(i)", age: 19, gender: .male) array.append(temp)}//定义一个字典,用于统计每个类的对象个数var dict = ["Person": 0, "Teacher": 0, "Student": 0]for item in array { if item is Teacher { //是否是Teacher类 dict["Teacher"]! += 1 } else if item is Student { //是否是Student dict["Student"]! += 1 } else { //Person类 dict["Person"]! += 1 }}//输出字典值for (key, value) in dict { print("\(key) has \(value) items")}//原始数组print("------------------------------")for item in array { print(item)}//根据age从大到小排序print("------------------------------")array.sort { return $0.age > $1.age}for item in array { print(item)}//根据全名从前往后排序print("------------------------------")array.sort { return $0.fullName < $1.fullName}for item in array { print(item)}//根据gender和age从大往小排序print("------------------------------")array.sort { return ($0.gender > $1.gender) && ($0.age > $1.age) }for item in array { print(item)}最后这段代码的输出结果如下:
阅读全文
2 0
- (作业)Swift类的属性与方法
- Swift学习 类、属性、方法的介绍
- Swift 类与属性
- Swift中的willSet与didSet(重写属性的Set方法)
- Swift 第八课属性与方法
- 12.5 Swift可选属性与构造方法
- 【iOS】Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等
- Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等
- Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等
- Swift内部类调用外部类方法、属性的变通
- Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写
- Swift中类的属性
- Swift类的属性监听器
- Swift 方法 self属性
- 12.4 Swift常量存储属性与构造方法
- 6.15作业:类与方法
- swift 中"+"方法,与"-"方法的定义
- Swift函数与类中方法的参数标签
- HDOJ HDU 1024 Max Sum Plus Plus
- Android开发 之 OpenGL ES系列(3--坐标系)
- 深入理解TCP(2)TCP的断开一定是四次挥手吗?FIN_WAIT_2和CLOSE_WAIT,TIME_WAIT以及LAST_ACK的细节
- PostgreSQL创建索引例子
- Redis分布式锁详解
- (作业)Swift类的属性与方法
- flask email service学习笔记
- 多线程第一章知识点
- HDU_2089_不要62
- TCP 的三次握手
- PAT 1081. Rational Sum (20) GCD
- 详解c++指针的指针和指针的引用-转载
- Hello CSDN
- CS50 2016-Week 0 学习笔记