• iOS开发Swift-8-类的继承,方法重写,构造器,枚举类型,可选类型,强制解包,可选绑定,隐式可选类型...


    1.类的继承

    1. class Animal {
    2. func breathe(){
    3. //...
    4. }
    5. }
    6. class Cat: Animal{
    7. var hasHair = true
    8. }
    9. let cat = Cat()
    10. cat.breathe()
    11. cat.hasHai
    12. class SmallCat: Cat{
    13. func eat(){
    14. //...
    15. }
    16. }
    17. let smallCat = SmallCat()
    18. smallCat.breathe()
    19. smallCat.hasHair
    20. smallCat.eat()

     2.方法的重写

    1. class Animal {
    2. func breathe(){
    3. //breathe
    4. }
    5. }
    6. class Fish: Animal{
    7. override func breathe() {
    8. super.breathe() //调用父类的breathe方法
    9. //override breathe
    10. }
    11. }

    3.构造器:创建对象;给对象进行初始化

    1. class Car{
    2. var color: String
    3. var seats: Int
    4. init(color: String, seats: Int){
    5. self.color = color
    6. self.seats = seats
    7. }
    8. }
    9. let car = Car(color: "break", seats: 5)
    10. //有初始值/默认值
    11. class Car2{
    12. var color = "red"
    13. var seats = 4
    14. init(color: String, seats: Int){
    15. self.color = color
    16. self.seats = seats
    17. }
    18. }
    19. let car2 = Car2(color: "break", seats: 5)

     4.枚举类型

    1. enum Color {
    2. case red
    3. case green
    4. case blue
    5. }
    6. let colorType = Color.green
    7. let colorType2: Color = .red //简写

    5.枚举的原始值

    1. enum ColorType2: String{
    2. case red = "veryRed"
    3. case green = "veryGreen"
    4. case blue = "veryBlue"
    5. }
    6. ColorType2(rawValue: "veryRed")
    7. enum ColorType3: Int{
    8. case a = 0
    9. case b
    10. case c
    11. }
    12. //b,c原始值自动递增1
    13. ColorType3.c.rawValue

    6.枚举的简写

    1. //简写
    2. enum ColorType4{
    3. case red, green, blue
    4. }
    5. enum ColorType5: Int{
    6. case a = 1, b, c
    7. } //如果Int类型的枚举全部没有赋初始值,则默认a为0

     7.可选类型

    1. var name: Optional<String> = Optional("Lili")
    2. //简写
    3. var name: String? = Optional("Lili")
    1. //简简写
    2. var name: String? = "Lili"

     8.强制解包

    1. //"Lili"
    2. var name: String? = "Lili"
    3. print(name) //Optional("Lili")
    4. print(name!) //"Lili"
    5. //nil
    6. var name: String? = nil
    7. print(name) //nil
    8. print(name!) //系统崩溃,报错Unexpectedly found nil while unwrapping an Optional value(展开可选值时意外发现nil)
    9. //所以需要对可选类型进行判断非空后再进行强制解包。

    9.可选绑定

    1. //iflet. 此处的name为nil时跳过这三行代码直接执行下面的。如果name不是nil则将name的值赋给unKnowName,然后可以使用unKnowName。
    2. if let unKnowName = name{
    3. print(unKnowNmae)
    4. }
    1. //guard:门卫。对可选类型进行拦截。如果name为nil,就进入到else中,再return。如果有值就赋给unKnowName,在else外进行使用。
    2. guard let unKnowName = name else {
    3. return
    4. }
    5. //如果遇到当name为空时就需要直接跳出方法体的情况,用guard比较好。可以直接return出来,并返回需要的东西。

     10.隐式可选类型

    1. //隐式可选类型:可以确定在第一次使用他的时候他肯定有值。所以直接定义的时候就加上感叹号,系统会对他进行自动解包。
    2. @IBOutlet weak var questionLabel: UILabel!
    3. questionLabel.text = queastions[0].text

     11.可选类型自动赋值

    1. //只有可选类型是一个变量,且没有给他赋初始值的时候,系统才会自动给他赋初始值nil。当非可选类型或者常量没有赋初始值,系统不会自动赋初始值。
    2. var name: String? //name = nil
    3. let name: String? //可选类型常量没有赋初始值,系统会报错。
  • 相关阅读:
    2023年【T电梯修理】考试题及T电梯修理考试报名
    《MongoDB入门教程》第11篇 数组运算符
    Java面向对象之——继承
    区块链的历史和发展:从比特币到以太坊
    Sentinel实现熔断与限流
    深入理解Spring AOP中的@EnableAspectJAutoProxy
    基于BP神经网络的手写数字识别问题研究附Matlab代码
    机器学习(19)---XGBoost入门
    GBase 8s是否支持自动实时跟踪、监控和调优
    购房,出资款性质如何认定?
  • 原文地址:https://blog.csdn.net/LYly_B/article/details/132633988