加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift Calss

发布时间:2020-12-14 06:26:41 所属栏目:百科 来源:网络整理
导读:// 类是一种引用类型class Person { var firstName: String var lastName: String // 构造函数 init(firstName: String,lastName: String) { self.firstName = firstName self.lastName = lastName } func fullName() - String { return self.firstName + "
// 类是一种引用类型
class Person {
    var firstName: String
    var lastName: String
    
    // 构造函数
    init(firstName: String,lastName: String) {
        self.firstName = firstName
        self.lastName = lastName
    }
    
    func fullName() -> String {
        return self.firstName + " " + self.lastName
    }
}

var person1 = Person(firstName: "Steve",lastName: "Jobs");
var person2 = person1
person1 === person2 // 判断两个实例是否相等用===,不能用==, == 来判断值类型


什么时候用结构体,什么时候用类

把结构体看作值的时候,比如温度,经纬,坐标。。。

把类看作物体的时候。比如人,动物,车。。。

结构体是值类型,类是引用类型,类是可以被继承的,结构体比类更加的轻量级

看下面的例子

struct Point {
    var x = 0.0
    var y = 0.0
}

struct Size {
    var width = 0.0
    var height = 0.0
}

class Rectangle { // 矩形
    
    var origin = Point() // 远点
    var size = Size() // 长宽
    var lengthOfSide:Double { // 边长
        get {
            return size.width * 2 + size.height * 2
        }
    }
    
    var area:Double { // 面积
        get {
            return size.width * size.height
        }
    }
    
    var center:Point {
    
        // get方法
        get {
            let centerX = origin.x + size.width/2
            let centerY = origin.y + size.height/2
            return Point(x: centerX,y: centerY)
        }
        
        // set方法
        set {
            origin.x = newValue.x - size.width/2
            origin.y = newValue.y - size.height/2
        }
    }
    
    // 构造方法
    init(origin: Point,size: Size) {
        self.origin = origin;
        self.size = size
    }
}

var rect = Rectangle(origin: Point(x: 0,y: 0),size: Size(width: 10,height: 10))
rect.center = Point(x: 10,y: 10)
print(rect.origin)
print(rect.lengthOfSide)
print(rect.area)
上面打印结果:

Point(x: 5.0,y: 5.0)

40.0

100.0


类可以有类属性(静态属性)

class Player {
    static var highestScore = 0 // 静态属性记录所有玩家的最高分
    var name:String
    var score:Int = 0
    init(name: String) {
        self.name = name
    }
    
    // 静态方法 类方法
    static func getPlayerHighestScore() -> Int {
        return Player.highestScore
    }
    
    func play() -> Void {
        let score = (Int)(arc4random() % 99)
        print("(name) palyer is get socre (score)")
        
        self.score += score
        print("total score of (name) is (self.score)")
        
        if score > Player.highestScore {
            Player.highestScore = score
            print("Player highestScore is (Player.highestScore)n");
        }
    }
}

var player1 = Player(name: "player1")
player1.play()
player1.play()
print("static method Player highestScore is (Player.getPlayerHighestScore())n")
上面打印结果:

player1 palyer is get socre 87

total score of player1 is 87

Player highestScore is 87


player1 palyer is get socre 29

total score of player1 is 116

static method Player highestScore is 87

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读