Swift基础教程笔记 - 5、枚举、结构体、类

本文章内容来源于:Swift语言入门 - 网易云课堂。手打,有修改。推荐初学Swift语言的朋友学习。

// 枚举类型
enum Direction {
    case east
    case west
    case south
    case north
}

enum AppleOs {
    case iOS, macOS, watchOS, tvOS
}

// .语法
var walk = Direction.north

walk = .east // 省略Direction

// 使用switch语句来匹配枚举值
switch walk {
case .east:
    print("正在往东走")
case .west:
    print("正在往西走")
case .south:
    print("正在往南走")
case .north:
    print("正在往北走")
}

var direction = Direction.east

switch direction {
case .east:
    print("正在往东走")
default:
    print("没有往东走")
}

// 类和结构体。构造体,通过定义属性和方法,扩展功能。
struct Resolution {
    var width = 0 // 属性
    var height = 0
}

class Player {
    var name = ""
    var HP = 100  // 血量
    var ATK = 30 // 攻击力
}

// 类和结构体的实例
var resolution = Resolution()

var player1 = Player()
var player2 = Player()

// 属性的访问和修改
resolution.width = 1920
resolution.height = 1080

player1.name = "玩家1"
player2.name = "玩家2"

player1.HP -= player2.ATK
print("\(player1.name) 受到 \(player2.name)攻击,血量剩余 \(player1.HP)")

// 结构体的成员逐一构造函数
var vga = Resolution(width: 640, height: 480)

// 结构体是值类型
var hd = Resolution(width: 1920, height: 1080)
var cinema = hd
cinema.width = 2048
print("cinema现在的分辨率宽是\(cinema.width)")
print("hd的分辨率宽仍然是\(hd.width)")

// 类是引用类型
var player = Player()
player.name = "玩家"
player.HP = 200
player.ATK = 50

var shadow = player
shadow.HP -= 30
print("shadow现在的血量为\(shadow.HP)")
print("player现在的血量也为\(player.HP)")

// 类的继承
// 基类
class Vehicle {
    var currentSpeed = 0.0
    func makeNoise() {
        // 什么也不做,交通工具不一定会有噪音
    }
}

// 子类的声明
class Bicycle: Vehicle {
    var hasBasket = false
}

let bicycle = Bicycle()
bicycle.hasBasket = true
bicycle.currentSpeed = 15

// 子类还可以被其他类继承
// tandem 双人自行车
class Tandem: Bicycle {
    var currentNumberOfPassengers = 0
}

let tandem = Tandem()
tandem.hasBasket = true
tandem.currentNumberOfPassengers = 2
tandem.currentSpeed = 22

// 类的重写
class Train: Vehicle {
    override func makeNoise() {
        print("🚄火车的声音")
    }
}

class Plane: Vehicle {
    override func makeNoise() {
        print("✈飞机的声音")
    }
}

let train = Train()
train.makeNoise()

let plane = Plane()
plane.makeNoise()

// 构造函数(构造器),实现实例的初始化

class Box {
    var length: Double
    var width: Double
    var height: Double
    
    init(length: Double, width: Double, height: Double) {
        self.length = length
        self.width = width
        self.height = height
    }
    
    // 立方体
    init(cube sideLength: Double) {
        length = sideLength
        width = sideLength
        height = sideLength
    }
}

let box = Box(length: 3, width: 2, height: 4)
let cube = Box(cube: 6)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值