12--swift之继承

原创
2016/03/10 13:01
阅读数 5

1.简介

子类可以继承父类的方法,属性,下标脚本

只有类才能有继承,结构体,枚举都没有

class Animal {

var name: String!

var age: Int!

func run(){

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

}

}

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")

}

}


展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部