0108iOSAPP_枚举数据,类的继承,实例化,?和!使用
程序员文章站
2022-06-08 13:53:43
...
父类,超类 Super class
import Foundation
class Person{
var agedate = "三国"
var country :String?
// ?问号的意思就是,这个变量可能有值也可能没有值。没有值得时候其等于nil
// 使用了问号,属性就可以不用在类中初始化。
func printAgeDate(){
print("这里是父类的打印")
}
}
子类,Sub class
//子类继承父类
class Wujiang:Person {
var name:String
var wuli:Int
// 赋值为枚举类型
var type:WujiangType
// 赋值为枚举类型
var type1:WujiangType = WujiangType.将领
// 赋值为枚举类型,后面省略了枚举名称
var type2:WujiangType = .军师
// 类属性初始化,也叫构造方法
init(name:String,wuli:Int,type:WujiangType) {
self.name = name
self.wuli = wuli
self.type = type
}
func moveAction() {
print("武将的姓名\(name),武力值\(wuli),类型\(type)")
}
// 重写父类的方法,子类可以改写和扩展父类中的方法,使用 override 关键词。子类中调用父类的方法使用super.,调用子类自己的方法使用self
override func printAgeDate() {
// 子类中调用父类同名方法
super.printAgeDate()
// 增加子类的方法
print("这是子类中的打印")
// 子类中调用自己的方法
self.moveAction()
// print("国家是\(super.country!)")
// !叹号,强制解析,表示确定变量有值,获取他,为了防止系统错误不要这样使用
// 使用条件判断对不确定的值进行获取
if let use_country = country {
print("已经设定的国家是\(use_country)")
}else{
print("没有设定国家")
}
}
// convenience init(<#parameters#>) {
// <#statements#>
// }
}
对象实例化
import Foundation
var zhangfei = Wujiang(name:"张飞",wuli:99,type:WujiangType.战士)
//print(zhangfei)
//dump(zhangfei)
zhangfei.moveAction()
zhangfei.wuli = 199
zhangfei.country = "蜀国"
//print(zhangfei.wuli)
//dump(zhangfei)
print(zhangfei.agedate)
zhangfei.printAgeDate()
/*
枚举,存放特定数据的形式,使用 枚举名称.值 使用。相当于增加了一种数据类型,可以省略枚举名称,直接用 .值 调用
类:
父类 == Super class;子类 == Sub class
类中的属性要初始化,使用 init(){}方法,也就是构造函数
类中的属性使用问号,可以不用初始化 var name:String?
?问号的意思就是,这个变量可能有值也可能没有值。没有值得时候其等于nil
name! 强制解析获取值
!叹号,强制解析,表示确定变量有值,获取他,为了防止系统错误不要这样使用,可以用if判断
if let use_name = name{
name有值执行
}else{
name没有值执行
}
子类可以改写和扩展父类中的方法,使用 override 关键词。子类中调用父类的方法使用super.,调用子类自己的方法使用self
override func printAgeDate() {
super.printAgeDate()
self.moveAction()
}
*/