1.类的继承
- class Animal {
- func breathe(){
- //...
- }
- }
-
- class Cat: Animal{
- var hasHair = true
- }
-
- let cat = Cat()
- cat.breathe()
- cat.hasHai
-
- class SmallCat: Cat{
- func eat(){
- //...
- }
- }
- let smallCat = SmallCat()
- smallCat.breathe()
- smallCat.hasHair
- smallCat.eat()
2.方法的重写
- class Animal {
- func breathe(){
- //breathe
- }
- }
-
- class Fish: Animal{
- override func breathe() {
- super.breathe() //调用父类的breathe方法
- //override breathe
- }
- }
3.构造器:创建对象;给对象进行初始化
- class Car{
- var color: String
- var seats: Int
- init(color: String, seats: Int){
- self.color = color
- self.seats = seats
- }
- }
- let car = Car(color: "break", seats: 5)
- //有初始值/默认值
- class Car2{
- var color = "red"
- var seats = 4
- init(color: String, seats: Int){
- self.color = color
- self.seats = seats
- }
- }
- let car2 = Car2(color: "break", seats: 5)
4.枚举类型
- enum Color {
- case red
- case green
- case blue
- }
- let colorType = Color.green
- let colorType2: Color = .red //简写
5.枚举的原始值
- enum ColorType2: String{
- case red = "veryRed"
- case green = "veryGreen"
- case blue = "veryBlue"
- }
- ColorType2(rawValue: "veryRed")
-
- enum ColorType3: Int{
- case a = 0
- case b
- case c
- }
- //b,c原始值自动递增1
- ColorType3.c.rawValue
6.枚举的简写
- //简写
- enum ColorType4{
- case red, green, blue
- }
- enum ColorType5: Int{
- case a = 1, b, c
- } //如果Int类型的枚举全部没有赋初始值,则默认a为0
7.可选类型
- var name: Optional<String> = Optional("Lili")
- //简写
- var name: String? = Optional("Lili")
- //简简写
- var name: String? = "Lili"
8.强制解包
- //"Lili"
- var name: String? = "Lili"
- print(name) //Optional("Lili")
- print(name!) //"Lili"
- //nil
- var name: String? = nil
- print(name) //nil
- print(name!) //系统崩溃,报错Unexpectedly found nil while unwrapping an Optional value(展开可选值时意外发现nil)
- //所以需要对可选类型进行判断非空后再进行强制解包。
9.可选绑定
- //iflet. 此处的name为nil时跳过这三行代码直接执行下面的。如果name不是nil则将name的值赋给unKnowName,然后可以使用unKnowName。
- if let unKnowName = name{
- print(unKnowNmae)
- }
- //guard:门卫。对可选类型进行拦截。如果name为nil,就进入到else中,再return。如果有值就赋给unKnowName,在else外进行使用。
- guard let unKnowName = name else {
- return 值
- }
- //如果遇到当name为空时就需要直接跳出方法体的情况,用guard比较好。可以直接return出来,并返回需要的东西。
10.隐式可选类型
- //隐式可选类型:可以确定在第一次使用他的时候他肯定有值。所以直接定义的时候就加上感叹号,系统会对他进行自动解包。
- @IBOutlet weak var questionLabel: UILabel!
- questionLabel.text = queastions[0].text
11.可选类型自动赋值
- //只有可选类型是一个变量,且没有给他赋初始值的时候,系统才会自动给他赋初始值nil。当非可选类型或者常量没有赋初始值,系统不会自动赋初始值。
- var name: String? //name = nil
- let name: String? //可选类型常量没有赋初始值,系统会报错。
