码迷,mamicode.com
首页 > 编程语言 > 详细

Swift面向对象详解

时间:2015-06-17 09:28:04      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

1,首先来看看如何在Swift中定义一个类和类里面的属性、构造函数、方法及类方法

import Foundation

class Hello{
    //成员属性
    var _name:NSString?="jikexueyuan"
    //构造函数
    init(){      
    }
    //重载构造函数
    init(name:NSString){
        _name = name
    }
    //方法
    func sayHello(){
        println("Hello \(_name)")
    }
    //类方法
    class func sayHi(){
        println("Hello Swift")
    }
}
var hello = Hello(name: "chen")
hello.sayHello()
Hello.sayHi()

 

2,在Swift中继承是跟C#一样使用冒号的形式来表示。一旦某个类继承了它的父类,就同时有了父类的属性和方法。在子类中可以重写父类的方法也可以调用父类的方法。

class Hi:Hello {
    //重写父类方法
    override func sayHello() {
        super.sayHello()//调用父类方法
        println("Hi \(_name)")
    }
}
var hi = Hi()
hi.sayHello()

 

3,在程序编写的过程中有的时候我们会使用到第三方类库或者使用系统的类库的时候,发现这些类库中某些类需要扩展则可以使用extension关键词来实现。若子类继承带有extension扩展的父类,相应的子类也应该会有扩展的方法。

//类的动态扩展
extension Hi{
    func sayHaha(){
        println("Haha")
    }
}
hi.sayHaha()

 

4,在Swift中接口使用protocol关键字来定义

protocol Person{
    func getName()->NSString
}

class Man: Person {
    func getName() -> NSString {
        return "jikexueyuan"
    }
}
var man = Man()
var hiMan = Hi(name: man.getName())
hiMan.sayHello()

 

5,在Swift中命名空间使用类的嵌套的方法去实现,但是当命名空间嵌套很复杂且命名空间里的类会非常多的时候会显得很臃肿。这个时候可以在一个Swift文件中定义命名空间的嵌套,在另外一个Swift文件中使用extension关键字来扩展命名空间,最后在使用到的文件中直接调用就可以了。

//---Space.swift
class com{
    class jikexueyuan{
    
    }
}
//---Hello.swift
extension com.jikexueyuan{
    class Hello {
        func sayHello(){
            println("Hello")
        }
    }
}
//---Hi.swift
extension com.jikexueyuan{
    class Hi  {
        func sayHi(){
            println("Hi")
        }
    }
}
//---Main.swift
var spaceHello = com.jikexueyuan.Hello()
spaceHello.sayHello()
var spaceHi = com.jikexueyuan.Hi()
spaceHi.sayHi()



Swift面向对象详解

标签:

原文地址:http://www.cnblogs.com/chenjianxiang/p/4582374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!