12--swift之繼承

1.簡介ide

子類能夠繼承父類的方法,屬性,下標腳本spa

只有類纔能有繼承,結構體,枚舉都沒有orm

class Animal {繼承

var name: String!string

var age: Int!it

func run(){class

print("\(name):\(age) run")方法

}im

}腳本

class Dog: Animal {

   override func run(){//覆蓋父類的方法

      super.run()

      print("dog running..")

 }


}

var d = Dog()

d.age = 3

d.name = "huahua"

d.run()

也能夠爲類繼承的屬性添加觀察器

2.父類(基類)是抽象非具體的

class User {

var username: String = "admin"

var password: String = "admin"

func login(username: String,pwd: String){

self.username = username

print("\(username):login")

}

func register(){

print("\(username):register")

}

func addUser(){

print("adduser")

}

}

var u = User()

u.login("tom", pwd: "123")

u.register()

3.重寫

子類能夠爲繼承來的方法,屬性,下標腳本重寫

class Animal {

var name: String?

var age: Int = 2

var desc: String{

return "\(name): \(age)"

}

func run(){

print("animal run")


}

func makenoise(){

print("make noise")

}

}

class Dog: Animal {

override var name: String?{

willSet{//能夠重寫屬性的觀察器

print("name will be changed")

}

}

override var desc: String{

return "Dog\(name):\(age)"

}//能夠重寫計算屬性

override func run() {

print("dog run")

}

override func makenoise() {

print("wang wnag")

}

}


var d = Dog()

d.name = "hua hua"

d.age = 3

print(d.desc)

d.run()

d.makenoise()

能夠經過super.method()調用父類方法

4.防止重寫final

final class SomeClass {

final var v: Int = 1

var b: String = "some string"

final func f1(){

print("f1")

}

func f2(){

print("f2")

}

}

class SubClass: SomeClass {

override var v: Int{

willSet{

print("will set")

}

didSet{

print("did set")

}

}

override func f1() {

print("override f1")

}

override func f2() {

print("override f2")

}

}

相關文章
相關標籤/搜索