swift类和结构体004-类和结构体基本使用

//: Playground - noun: a place where people can play

import UIKit

//----类和结构体------//

//1.结构体的定义
struct Size {

    //结构体中的属性,给定默认值
    var width = 375
    var height = 667

    //Swift的结构体中可以定义方法,与C、OC不同
    func show() {

        print("(\(width):\(height))")
    }

}

var size = Size() //结构体的构造方法来构建一个结构体实例
print(size.width)
print(size.height)

size.show()

//2.类的定义
class Person {

    //类中定义的属性必须进行初始化
    var name:String = ""
    var age:Int = 0
    let sex:Int = 0

    //类中方法的定义
    func speak() {
        print("say hello name:\(name),age:\(age),sex:\(sex)")

    }

}

//创建实例
let kathy = Person()
kathy.speak()

kathy.name = "Kathy"
kathy.age = 10
//kathy.sex = 1
kathy.speak()

//3.类中的属性可以是一个结构体变量
class View {

    var opacity = 1.0
    var name = ""

    var viewSize = Size()

}
var myView = View()

//Swift允许设置类中结构体属性的子属性
myView.viewSize.width = 480

//4.结构体和类的区别

//(1)结构体有对应的逐一构造器
var size2 = Size(width: 320, height: 240)

size2.show()

//而类中没有相应的构造器
var myView2 = View()

//(2)结构体和枚举都是值类型,而类是引用类型
var size3 = size2
size2.width = 480
size2.show()
size3.show()

var mark = Person()
mark = kathy

//mark.speak()
//kathy.speak()
kathy.age = 30
kathy.speak()
mark.speak()

//类的实例的内存管理仍然使用ARC

//5.===运算符:用来判断变量或者常量是否引用同一个实例,仅用于引用类型
//!==运算符
if mark  === kathy {

    print("引用同一个实例")
}

//===和==,==两个实例的值是否相等,===表示是否引用同一个实例
时间: 2024-12-15 07:48:09

swift类和结构体004-类和结构体基本使用的相关文章

Swift结构体与类

在面向过程的编程语言(如C语言)中,结构体用得比较多,但是面向对象之后,如在C++和Objective-C中,结构体已经很少使用了.这是因为结构体能够做的事情,类完全可以取而代之.而Swift语言却非常重视结构体,把结构体作为实现面向对象的重要手段.Swift中的结构体与C++和Objective-C中的结构体有很大的差别,C++和Objective-C中的结构体只能定义一组相关的成员变量,而Swift中的结构体不仅可以定义成员变量(属性),还可以定义成员方法.因此,我们可以把结构体看做是一种轻

Swift:什么时候使用结构体和类

发布于 2015 年 8 月 14 日 世界上对swift持续不断的讨论话题中有一个就是什么时候使用结构体什么时候使用类.我想我今天要贡献一些自己的想法. 值 VS 引用 答案其实很简单:当你需要值语义(所谓值语义是一个对象被系统标准的复制方式复制后,与被复制的对象之间毫无关系,可以彼此独立改变互不影响)的时候使用结构体,当你需要引用语义(所谓值语义是一个对象被系统标准的复制方式复制后,与被复制的对象之间毫无关系,可以彼此独立改变互不影响)的时候使用类.就是那样! 欢迎下周再来... 等等! 怎

Swift的闭包,枚举,类和结构体

闭包(Closures) 使用过其它语言的应该对代码块并不陌生,Swift中的闭包与C,OC中的Block相似. 表示自包括的函数代码块.能够在代码中传递和使用. 而且能够捕获和存储上下文的变量以及常量值,Swift会为你进行捕获相关的内存操作. 上一篇文章提到的函数.也是一种特殊的闭包.详细在: 全局函数是有名字可是不会捕获不论什么值的闭包. 嵌套函数是有名字且能够捕获域内值的闭包. 闭包表达式是利用轻量级语法写的能够捕获上下文值的匿名闭包. 基本的语法 表达式的一般语法以及简化过程 上面罗列

Swift 结构体和类

//*---------------------结构体-------------*/ //swift结构体也具有封装的概念 //swift结构体比OC C语言里面的结构体更加进了一步,里面可以有方法,更接近我们的类 //结构体的定义格式 struct结构体名{成员变量} struct rect { var width:Double //按构造方法赋初值 var height:Double //方法 func getHeightWidth() -> (x:Double,y:Double)//->

结构体与类

最近开始想学习下Swift,下了Swift3.0中文版PDF,间断性看了几天,发现看不进去,所以还是从实践上学习吧,直接创建工程搭代码,多问度娘. 在此记录下对结构体与类的理解,之前学OC很少碰自定义结构体,所以理解上比较模糊混淆.好吧,我不是个合格的初级开发者. 结构体与类很相似,如初始化和属性访问,定义语法区别关键字struct和class. 在日常开发中,Swift在两者选择上建议第一选择是结构体 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font:

C++中结构体和类的区别

在C++中,结构体是一种特殊形态的类. 结构体和类的唯一区别就是:  结构体和类具有不同的默认访问控制属性. 类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private) 结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public) C++中,不使用结构体丝毫不会影响程序的表达能力.C++之所以要引入结构体,是为了保持和C程序的兼容性. 但有时仍会在C++中使用结构体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据.(若用类来保存,因类中成

结构体和类的唯一区别就是类函数没有加说明是私有而结构体函数是公有

结构体和类的唯一区别就是              类函数没有加说明是私有                   而   结构体函数是公有

结构体和类

结构是值类型,但在语法上常常当做类来处理 struct typeNum { public string a="hello"; public string b="world"; } 如果仅需要一个小的数据结构,可以考虑用结构,因为结构在性能上比类略佳. 结构不支持继承,在使用前必须先初始化结构是会影响性能的值类型,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的. 正面的影响是为结构分配内存时,速度非常快,因 为它们将内联或者保存在栈中.在结构超出了作用域被

介绍C#结构体与类区别

1. 结构体与类定义方式 结构体定义使用struct类定义使用class 结构体: struct testDemo{ int num; void action(){ } } 类: class testDemo{ int num; void action(){ } } ================== 2. 结构体与类的成员初始化 结构体成员变量在声明时不能赋值,而类在声明变量时会自动写入构造函数完成赋值(即只能定义,不能执行). 结构体中隐式构造函数存在,不能手动写,其余构造函数在手动编写中

[转]C#中的结构体与类的区别

C#中的结构体与类的区别 经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字struct.在语法上其实类和结构有着很多相似的地方. 定义类的语法 1 class Person 2 { 3 private string name; 4 private int age; 5 6 public void SayHi() 7 { 8 Console.WriteL