美文网首页
swift学习-类

swift学习-类

作者: 男人宫 | 来源:发表于2020-03-18 20:42 被阅读0次
//类和结构体相似,比如都可以拥有属性和方法.但是他们也有区别.如下:
//1.类初始化时不会默认有成员初始化器,这就意味着,如果你的类中有属性,那么你就必须要创建自己的初始化器
//类的起名要用驼峰命名法,第一个字母大写
class Animal {
    var name: String
    init(name: String) {
        self.name = name
    }
}

let animal = Animal(name: "北极熊")
print(animal.name)
//2.类可以继承.子类继承父类所有的属性和方法,且子类还可以创建自己的属性和方法.而且默认继承父类的初始化器
class Cat: Animal {
    //子类默认继承父类的初始化器,但子类也可以定义自己的初始化器,但子类的自定义初始化器需要调用父类的初始化器super.init()
}
let cat = Cat(name: "🐈")
print(cat.name)
class Dog: Animal {
    init(aname: String ) {
        super.init(name: aname)
    }
}
let dog = Dog(aname: "泰迪")
print(dog.name)
//3.方法重写.子类重写父类的方法,替代父类的方法
class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
    
    func canwalk() {
        print("\(name)走起路来真好看")
    }
    
}
class Gril: Person {
    //重写父类的方法.这个方法就和父类没关系了.如果还想同时用父类里面的方法可以用super调用父类方法
    override func canwalk(){
       // super.canwalk()
        print("\(name)已经进化到会飞了")
    }
}
let gril = Gril(name: "小苍")
gril.canwalk()
//4.最终类.如果当你创建了一个类,不想让别人去继承,就在类的前面加上final关键字
final class Car {
    //加上final这样别人就无法继承
}
//5.拷贝对象的时候.结构体是值类型,类是引用类型.
class Room {
    var name = "浪费小屋"
}
var aroom = Room()
print(aroom.name)
var a_room = aroom
a_room.name = "大别业"
print(aroom.name)
//5.反初始化器
//deinit {
//在类销毁的时候调用
//}
//6.可变性.即使创建了一个常量的类,如果类里面有可变属性,那么可以改变这个属性的值

相关文章

网友评论

      本文标题:swift学习-类

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