日常随笔第十弹-类/协议/拓展

2016-07-24  本文已影响14人  没有北方的南方

1. 成员与类的权限

2. 类的封装

class hummen {//封装
    var name : String = ""
    var age : UInt = 0
    private var weight : Double = 0
    var height : Double = 0
}


var p3 = people()
p3.name = "李雪"
print(p3.name)

var p4 = p3
p4.height = 34
print(p4.height, p4.name)

class tangle {//可定义存储属性,也可定义计算属性
    var height : Double = 0
    var weight : Double = 0
    var name : String!{
    willSet(value){//储存属性
            print("将\(name)设置为:(value)")
        }
    didSet{
            print("已经设置为:\(name)")
        }
    }
    var area:Double{//计算属性
        set{
            height = sqrt(newValue)
            weight = sqrt(newValue)
        }
        get {
            return height * weight
        }
        //return height * weight
    }
    func same()  {
        print("this is the same")
    }
}

var t1 = tangle()
t1.height = 24
t1.weight = 5

t1.name = "张三"

print(t1.area)

3. 类的继承

class rectangle: tangle {//继承tangle
    var width : Double = 0
    func diffrent() {
        print("this is diffrent")
    }
    override func same() {//重新构造父类的方法,需添加关键字override
        print("this the same")
    }
}
var re1 = rectangle()
re1.diffrent()
re1.same()

var re2 : tangle//声明为tangle类
re2 = rectangle()//re2实际为rectangle类,但是还是tangle类
var re3 = re2 as! rectangle//将re2强制转换为rectangle类
re2.same()
re3.diffrent()

4. 类的协议与扩展

4.1 协议的作用

协议的定义

protocol extra {
    func condition()
}

协议的实现

class Clothes : extra{
    func condition() {
        print("Cloth is dry~")
    }
}

4.2 扩展的作用


//也可以给类添加功能,“类型”没有局限
extension Int{//给已有类型添加功能,扩展Int类型中的某些功能,包括方法
    //var i = 123//不能创建存储属性,只能是计算属性
    var i : Int{
        return self * 2
    }
    func InfoPrint(number : Int, number1 :Int) -> Int {
        return number * self + number1
    }
}
var s = 123
print(s.i, s.InfoPrint(3, number1: 4))
extension Clothes {
    func condition() {
        print("Cloth is dry~")
    }
}

5. 计算符重载

func 符号()->类型{}
上一篇 下一篇

猜你喜欢

热点阅读