Swift面向对象详解

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()
时间: 2024-11-17 23:49:02

Swift面向对象详解的相关文章

Java面向对象详解

Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵懵懂懂,后来实践的多了,有些东西才慢慢清 楚:二是经过一定的实践之后,反过头来再去学习一些基础东西才能够理解的更透彻:三是有些东西基础但是确很重要,是值得好好搞一搞的. 1.面向对象 面向对象(Object Oriented)是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),

Swift学习——Swift基础详解(四)

A:小儿编程很不好! B:多半是不爱学,从看英文版开始,让你爱上编程! Type Aliases    类型重定义(typedef) Swift中重定义类型的关键字是typealias,至于怎么用,应该不必多说了,看例子: typealias AudioSample = UInt16 //定义了一个类型名称AudioSample,代表UInt16类型 var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound is now 0 Boo

Swift学习——Swift基础详解(一)

注:由于基础部分在Swift Tour 中已经大体的说明了,所以在详解中不会达到100%的原文释义 Constants and Variables  常量和变量 常量和变量都需要声明名称和类型(作为程序员,这些基础也就不说了),常量一次赋值不能改变,变量的值可以改变 Declaring Constants and Variables   声明常量和变量 常量和变量在使用之前必须要声明,使用let关键字定义常量,var关键字定义变量 下面的例子可以用来定义用户登录的时候最大的尝试次数: let m

Swift学习——Swift基础详解(二)

上节说了没有营养的变量和常量,这玩意,都差不多,自己稍微看下就好了 Integers    整型 整数就是整数了,没有小数,整数有符号(+,-,0)或者无符号(0,+) Swift提供了8,16,32,64位的有符号和无符号的整数,命名使用C的方式,比如,8位无符号的整型UInt8,32位有符号的整型就是Int32 Integer Bounds    整型范围 可以使用min 和 max获取整数类型的最大值和最小值 let minValue = UInt8.min // minValue is

Swift学习——Swift基础详解(三)

小葵花课堂继续开讲 Numeric Literals    数字文本 数字文本有以下几种写法: A decimal number, with no prefix A binary number, with a 0b prefix An octal number, with a 0o prefix A hexadecimal number, with a 0x prefix 十进制数,无前缀:二进制数,0b前缀:八进制数,0o前缀:十六进制数,0x前缀 论数字17的N种表现形式: let deci

Swift学习——Swift基础详解(八)

Assertions    断言 可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况.然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行.这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因. Debugging with Assertions    使用断言进行调试 断言会在运行时判断一个逻辑条件是否为true.从字面意思来说,断言"断言"一个条件是否为真.你可以使用断言来保证在运行其他代

Swift学习——Swift基础详解(六)

Optionals    选配 选配(好像不是这么翻译的)适用于那些值可能为空的情况,一个选配有两种情况:存在值并且等于x,或者值不存在. 选配的概念在OC和C里面并没有,在OC中最接近的概念就是:OC中的返回值为对象的函数,当对象不存在的时候,可以返回nil,但是nil只能代表对象,不可以代表基础类型或者结构体和枚举类型.OC中使用NSNotFound表示值不存在.在Swift中,不需要使用其他的类型表示不存在的值. 举个例子: 在Swift中,String类型有一个方法叫做toInt,但是并

Swift学习——Swift基础详解(五)

上回书说道:灰常灰常基本的数据类型 下面咱们来点高级的: Tuples    元组 元组存储一对键值,并且没有类型限制 let http404Error = (404, "Not Found") // http404Error is of type (Int, String), and equals (404, "Not Found") 书上废话一堆,反正元组就是这么写,上面的例子还是(Int,String)类型的元组,而且元组里面的类型随便你定义 也可以将元组的变

python面向对象详解(上)

创建类 Python 类使用 class 关键字来创建.简单的类的声明可以是关键字后紧跟类名: class ClassName(bases): 'class documentation string' #'类文档字符串' class_suite #类体 实例化 通过类名后跟一对圆括号实例化一个类 mc = MyClass() # instantiate class 初始化类 'int()'构造器 def __int__(self): pass 注意:self类似Java的this关键字作用,它代