美文网首页
swift 学习:second(类与结构体)

swift 学习:second(类与结构体)

作者: 温柔vs先生 | 来源:发表于2018-04-10 10:09 被阅读0次
  • 一个类必须给具体的值才能起作用,这叫初始化或实例化。
  • 构造器:一个类的初始化方法。 属性:一个类的"特征"。方法:一个类的“行为”。
class Duck {
    var color : String
    var foot : Int
    
    init(color: String, foot: Int) {
        self.color = color
        self.foot = foot
    }
    
    func growUp(color: String)  {
        self.color = color
    }
}

声明了一个Duck的类,类里面有两个属性color,foot,下面是初始化方法(有初始化方法的话)我们可以通过初始化方法来生成一个实例对象。在下面是类中的一个方法

生成了一只鸭,叫初始化。duck1是一个实例。

let duck1 = Duck(color: "yellow", foot: 2)
duck1.growUp(color: "white")

如果给属性值,会生成一个默认的构造器init(),初始化时不能更改属性值

class DuckGreen {
    var color = "Green"
    var foot = 2
}
let duck2 = DuckGreen()

这里我们看到声明了 一个DuckGreen类,定义了两个属性,但是我们直接给属性赋值,这样就默认生成了一个初始化方法,但是不能调用初始化方法,不能通过初始化方法更改属性的值。


image.png

结构体只需声明属性,构造器系统自动生成!

struct DuckRed {
    var color = "Red"
    var foot = 2
}
let duck3 = DuckRed()
let duck4 = DuckRed(color: "Deep Red", foot: 2)

类可以被继承,子类可以修改父类中的属性和方法。结构体和枚举不能继承。

class Duck {
    var color : String
    var foot : Int
    
    init(color: String, foot: Int) {
        self.color = color
        self.foot = foot
    }
    
    func growUp(color: String)  {
        self.color = color
    }
}

//鸳鸯继承了鸭子的所有属性和方法
class MandarinDuck: Duck {
    //增加了属性
    var lovers = 0
    var name = "鸳鸯"

    //可以更改父类中的方法
    override func growUp(color: String) {
        //调用父类的方法
        super.growUp(color: color)
        self.lovers = 1
        print("鸳鸯长大了!有了\(self.lovers)个伴侣!")
    }
    
    //计算属性:由其他属性间接得出(set),也可以影响其他属性(set)。
    var desc : String {
        get {
            return "\(self.name)是一种中国特有的鸭子种类,一生只有钟情于一个伴侣。"
        }
    }
}

let duck1 = MandarinDuck(color: "gray", foot: 2)
duck1.growUp(color: "Rainbow")
print(duck1.desc)

相关文章

  • swift 学习:second(类与结构体)

    一个类必须给具体的值才能起作用,这叫初始化或实例化。 构造器:一个类的初始化方法。 属性:一个类的"特征"。方法:...

  • Swift5.x-属性(中文文档)

    引言 继续学习Swift文档,从上一章节:结构体和类,我们学习了Swift结构体和类相关的内容,如结构体和类的定义...

  • swift4.0-11 类和结构体

    代码学习swift4.0, 类和结构体 //// main.swift// SwiftLearn11-类和结构...

  • 第九章 类和结构体

    c++中,结构体是稍有不同的类,类能做的,结构体也可以; 而swift中,结构体与类有较大区别, 结构体与类的区别...

  • Swift 结构体

    对 Swift 学习 的一些总结学习文献:Chris Eidhof. “Swift 进阶” 类与结构体的主要不同点...

  • Swift结构体内存初探之写时复制

    Swift赋予了结构体很多余类相同的特性,以至于Swift推荐在程序中使用结构体来存储结构化数据(关于类与...

  • Swift初探(二)

    继Swift初探之后,我们来继续学习下Swift里的结构体,类,协议,闭包 结构体 两种调用结构体的方法1.调用结...

  • iOS知识点-8.类(class)和结构体(struct)有什么

    Swift Basics 类(class)和结构体(struct)有什么区别? Swift中,类是引用类型,结构体...

  • Swift学习_基本语法之枚举&类&结构体

    1.枚举 类和结构体 在swift中类和结构体类似,可以把结构体理解成是一种轻量级的类,在swift中结构体不仅可...

  • Swift第2次小结

    内容来源 Swift 5.1 教程 结构体和类 Swift 并不要求你为自定义的结构体和类的接口与实现代码分别创建...

网友评论

      本文标题:swift 学习:second(类与结构体)

      本文链接:https://www.haomeiwen.com/subject/pjdghftx.html