欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()
 }
 
 
 */

 

相关标签: swift