Swift2.0 类基础知识

类属性


//
//  SomeClass.swift
//  SwiftClass
//
//  Created by 张杰 on 15/6/17.
//  Copyright © 2015年 张杰. All rights reserved.
//

import Foundation
class SomeClass{
    //存储属性
    var value1 = 1;
    var value2:Int = 2;
    //计算属性
    var cal:Int{
        get{
            return value2
        }
        set(newValue){
            value2 = newValue
        }
    }
    //类属性,只能通过类访问,不能通过对象访问
    class var newValue:Int{
        return 29;
    }
    
    var teachers:Int = 0 {
        //属性监控器
        willSet(newTeachers){
            print("老师变化了\(newTeachers) 位")
        }
        didSet(old) {
            if teachers > old {
                print("与原来相比增加了\(teachers - old) 位老师")
            } else {
                print("与原来相比减少了\(old - teachers) 位老师")
            }
        }
    }
}


//
//  main.swift
//  SwiftClass
//
//  Created by 张杰 on 15/6/17.
//  Copyright © 2015年 张杰. All rights reserved.
//

import Foundation

var someClass = SomeClass()
//测试存储属性
print("测试存储属性")
print(someClass.value1)
print(someClass.value2)

//测试计算属性
print("测试计算属性")
print(someClass.cal)
someClass.cal = 20
print(someClass.cal)

//测试类属性
print("测试类属性")
print(SomeClass.newValue)

//测试属性监控器
print("测试属性监控器")
someClass.teachers = 3

测试存储属性
1
2
测试计算属性
2
20
测试类属性
29
测试属性监控器
老师变化了3 位
与原来相比增加了3 位老师
Program ended with exit code: 0


方法

//
//  ClassMethod.swift
//  SwiftClass
//
//  Created by 张杰 on 15/6/17.
//  Copyright © 2015年 张杰. All rights reserved.
//

import Foundation

class ClassMethod {
    var score = 0
    //实例方法
    //不带参数的函数
    func additive(){
        score++
        print("\(score)\n")
    }
    
    //带参数的函数
    func subtraction(amount: Int){
        score -= amount
        print("\(score)\n")
    }
    
    //类方法
    class func betterScore() {
        print("你获得有史以来最好的成绩\n")
    }
    
    //局部变量好存储变量同名的解决方法
    func printScore() {
        let score: Int = 50
        print("局部变量:\(score)")
        print("全局变量:\(self.score) \n")
    }
}

class NewClassMethod: ClassMethod {
    
    override class func betterScore() {
        print("子类,重写了类方法\n")
    }
    
    override func additive() {
        score += 3
        print("子类,重新了实例方法\n")
    }
}

//
//  main.swift
//  SwiftClass
//
//  Created by 张杰 on 15/6/17.
//  Copyright © 2015年 张杰. All rights reserved.
//

import Foundation

var classMethod = ClassMethod()

//测试实例方法
//测试无参方法
print("测试无参方法")
classMethod.additive()

//测试带参方法
print("测试带参方法")
classMethod.subtraction(10)

//测试类方法
print("测试类方法")
ClassMethod.betterScore()

//局部变量好存储变量同名的解决方法
print("局部变量好存储变量同名的解决方法")
classMethod.printScore()

//测试重写父类方法
var newClassMethod = NewClassMethod()
//测试调用父类方法
print("测试调用父类方法")
newClassMethod.subtraction(20)

//测试重新父类实例方法
print("测试重新父类实例方法")
newClassMethod.additive()

//测试重新父类方法
print("测试重新父类方法")
NewClassMethod.betterScore()


测试无参方法
1

测试带参方法
-9

测试类方法
你获得有史以来最好的成绩

局部变量好存储变量同名的解决方法
局部变量:50
全局变量:-9 

测试调用父类方法
-20

测试重新父类实例方法
子类,重新了实例方法

测试重新父类方法
子类,重写了类方法

Program ended with exit code: 0

下标脚本

//
//  ClassSubScript.swift
//  SwiftClass
//
//  Created by 张杰 on 15/6/18.
//  Copyright © 2015年 张杰. All rights reserved.
//

import Foundation

class Experience {
    
    var age:[Int] = Array(count: 5, repeatedValue: 0)
    //下标脚本
    subscript(index:Int) -> Int {
        //可读
        get{
            return age[index]
        }
        //可写
        set{
            age[index] = newValue
        }
    }
    
    
}

import Foundation

var ex = Experience()

ex[0] = 5
ex[1] = 6

print(ex[0])
print(ex[1])

5
6
Program ended with exit code: 0



你可能感兴趣的:(Swift2.0 类基础知识)