swift学习笔记(4)--结构体和类

来源:互联网 发布:dnf时装软件 编辑:程序博客网 时间:2024/05/28 20:20
//类和结构体//相同点//1.类和结构体都可以定义属性和方法(这是和c oc中的结构体的最大区别)//2.类和结构体中都能定义构造器方法//不同点//1.类可以在析构体deinit中释放资源,结构体不可以//2.类可以继承.结构体是不能被继承//3.类是一个引用类型,一个实例可以有多个引用,操作的是实例的本身;结构体是值类型,将内容拷贝到新的内存中,操作的是一块新的内存

1.结构体

//结构体struct length{    var stat = 0.0    var end = 0.0    init(stat : Double , end : Double)    {        self.stat = stat        self.end = end    }    func calculateLength() -> Double    {        return self.end - self.stat    }}var len = length(stat: 30, end: 100)len.calculateLength()

2.类

//类class Car{    var carName = String?()    var len : length!    init(name : String){        self.carName = name    }    //析构器 , 当类的实例释放的时候可以释放资源    deinit    {    }}

3.值类型(结构体)与引用类型(类)

var car = Car(name:"BYD")car.len = length(stat:20 , end:700)car.len.stat//值类型,操作的是拷贝的内容var leng = car.lenleng.stat = 100car.len.statcar.carName//引用类型,操作的实例本身var car1 = carcar1.carName = "aoTuo"car.carName

4.属性
(1).存储属性,将常量或者变量作为实例的一部分使用

struct Point{    var x = 0.0    var y = 0.0}struct Size{    var width = 0.0    var height = 0.0}

(2).计算属性,提供一个get方法来获取值,也可以提供一个可选的set方法来设置值

struct Rect {    var oraigon = Point()    var size = Size()    var center : Point{        get{            let centerX = size.width/2 + oraigon.x            let centerY = size.height/2 + oraigon.y            return Point(x: centerX, y: centerY)        }        set(newCenter){            oraigon.x = newCenter.x - size.width/2            oraigon.y = newCenter.y - size.height/2        }    }}var rect = Rect()rect.oraigon.x = 10rect.oraigon.y = 10rect.size.width = 100rect.size.height = 100rect.center.xrect.center.yrect.center = Point(x: 100, y: 100)rect.oraigon.x

(3).类型属性

class Stu{    class var age : Int{        return 29    }    var name : String!    var type : String!    init(name : String , type : String){        self.name = name        self.type = type    }    func printName() -> String{        return self.name    }//类的类型和方法,用class关键字声明    class func printAge() -> Int{        return self.age    }}Stu.printAge()var stu = Stu(name: "hanlei", type: "213")stu.printName()Stu.age

5.类的继承

class St : Stu{    //重写父类方法,方法前加override关键字    override func printName() -> String{        return self.name    }    override init(name: String, type: String) {        super.init(name: name, type: type)    }}
0 0
原创粉丝点击