0108iOSAPP_枚举数据,类的继承,实例化,?和!使用

父类,超类 Super class

import Foundation
class Person{
    var agedate = "三国"
    var country :String?
//    ?问号的意思就是,这个变量可能有值也可能没有值。没有值得时候其等于nil
//    使用了问号,属性就可以不用在类中初始化。
    
    func printAgeDate(){
      print("这里是父类的打印")
    }
}

子类,Sub class

import Foundation
//枚举数据
enum WujiangType{
    case 战士
    case 军师
    case 将领
}
//子类继承父类
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()
 }
 
 
 */

猜你喜欢

转载自blog.csdn.net/whqwjb/article/details/86079597
今日推荐