美文网首页
Note 7 类和结构体

Note 7 类和结构体

作者: cry_0416 | 来源:发表于2016-07-22 19:32 被阅读10次

结构体

struct student {
    var name : String?
    var number : Int?
    var age : UInt?
    func infoprint(){//结构体的方法,不能改变成员的值
        print(name, number, age)
    }
    static var i = 123 //静态成员,需要用结构体名来调用
    init() {//定义构造函数,对结构体成员进行初始化赋值
        name = ""
        number = 0
        age = 0
    }
    init(name:String){
        self.name = "cry"
    }
    init(number:Int){
        self.number = 23
    }

}

class dog {
    var kind: String = ""
    var weight: Double = 0.0
    
    static var i = 0 //静态成员,通过类名调用 类名.静态成员名 例如: dog.i
    
    func bite (name:String) -> Int{
        print("bite", name)
        return 1
    }
    //当类没有构造函数时,编译器自动生成一个无参的构造函数;一旦自己创建了构造函数,编译器就不会自动生成一个无参构造函数
    
    class func test(){
        print("test1")
        
        print(i)
        i = i + 1
    }//类方法不能直接使用成员变量,通过类名调用,可以使用静态成员
}

定义

  • 类的属性
  • 成员变量
  • 静态变量
  • 成员方法
  • 类方法
    let dog1 = dog()
    //如果是结构体,dog1 的属性不能更改
    //let改成var就可以
    dog1.kind = "中华田园犬"
    dog1.weight = 4
    print(dog1.bite("xx"))

    let dog2 = dog1
    dog2.kind = "藏獒" //如果是结构体 则变成两个,类是引用类型
    //strong/weak 强引用 弱引用
    //当一个对象被创建了,没有被使用的时候会被释放
    //例:
    var d1 = dog() //一旦执行dog(),就创建一个对象,让d1引用这个对象,相当于给了这个对象名字d1
    weak var d2 = d1 //让d2同样引用这个对象,weak定义的变量 一定是可选类型(optional类型)
    d1 = dog() //重新创建一个对象,让d1指向了这个对象
    //一开始创建的那个对象,只有d2在引用,但是是weak引用
    //所以一开始的dog()对象会被释放
    //*对象一旦没有强引用类型引用的时候,就被释放*

与结构体的区别

  • 用let定义的结构体变量,成员不能修改
  • 结构体是值类型.赋值的时候会发生赋值
  • 类是引用类型
  • 结构体的值不能随便修改,要加关键字mutating

相关文章

  • Note 7 类和结构体

    结构体 类 定义 类的属性 成员变量 静态变量 成员方法 类方法 与结构体的区别 用let定义的结构体变量,成员不...

  • 类和结构体

    类与结构体 本节内容包括: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合类型的赋值与...

  • Swift Tour Learn (六) -- Swift 语法

    Swift语法基础(五)-- (类和结构体、属性、方法) 本章将会介绍 类和结构体对比结构体和枚举是值类型类是引用...

  • swift基础_结构体和类

    一.结构体和类 结构体张这个样子 类张这个样子 二.结构体和类的区别 针对结构体, 即使你没有定义函数,编译器也会...

  • Day9 类和结构体

    本页包含内容:• 类和结构体对比• 结构体和枚举是值类型• 类是引用类型• 类和结构体的选择• 字符串、数组、和字...

  • Swift学习_基本语法之枚举&类&结构体

    1.枚举 类和结构体 在swift中类和结构体类似,可以把结构体理解成是一种轻量级的类,在swift中结构体不仅可...

  • swift面向对象特性——类和结构体

    类和结构体的定义 类的语法格式为: 结构体的语法格式为: Swift中类和结构体的名称都以大写字母开头。类的方法和...

  • SwiftUI-结构体与类

    一.结构体与类 结构体和类都可以使用属性和方法构建复杂数据类型,但是什么时候使用结构体,什么时候使用类呢?结构体和...

  • Swift5.1类和结构体

    9.类和结构体 结构体和类相比Swift中结构体和类的共同点:- 定义属性⽤于存储值- 定义方法⽤于提供功能- 定...

  • Swift笔记<十五>结构体和类的区别

    结构体和类的区别 结构体有逐一构造器,类没有 结构体是值类型,类是引用类型 结构体不是继承(意味着没有多态)

网友评论

      本文标题:Note 7 类和结构体

      本文链接:https://www.haomeiwen.com/subject/grbijttx.html