类。 

 

 

 

/*

/*

/*

/*

 类的宗旨概念

 类的主干概念

 结构体:

 结构体:

 Swift中的结构体和类相当相像, 可是又有差别之处

 斯维夫特中的结构体和类相当相像, 不过又有分裂之处

 结构体是用以封装分裂或壹致档次的数量的, 斯维夫特中的结构体是一类项目,
能够定义属性和格局(甚至构造方法和析构方法等)

 结构体是用以封装差别或雷同档次的数码的, 斯威夫特中的结构体是一类项目,
能够定义属性和办法(甚至构造方法和析构方法等)

 类是全部一样属性和方法的悬空

 类是富有同样属性和措施的虚幻

 格式:

 格式:

澳门葡京备用网址, 格式:

 格式:

 struct 结构体名称 {

 struct 结构体名称 {

 class 类名称 {

 class 类名称 {

 结构体属性和措施

 结构体属性和格局

 类的性质和办法

 类的特性和措施

 }

 }

 }

 }

 */

 */

 */

 */

 

 

class Rect {

class Rect {

struct Rect {

struct Rect {

    var width:Double = 0.0

    var width:Double = 0.0

    var width: Double = 0.0

    var width: Double = 0.0

    var height:Double = 0.0

    var height:Double = 0.0

    var height:Double = 0.0

    var height:Double = 0.0

    func show() -> Void {

    func show() -> Void {

}

}

        print(“width = \(width) height = \(height)”)

        print(“width = \(width) height = \(height)”)

// 假设结构体的品质有暗中认可值, 能够直接使用()构造贰个结构体

// 借使结构体的属性有暗许值, 能够一贯行使()构造一个结构体

    }

    }

// 如若结构体的习性未有暗许值, 必须采取各样组织器实例化结构体

// 如果结构体的性质未有默许值, 必须利用各种组织器实例化结构体

}

}

 

 

// 类没有种种构造器

// 类未有各类构造器

var r = Rect()

var r = Rect()

//var r1 = Rect(width: 10.0, height: 10.0)

//var r1 = Rect(width: 10.0, height: 10.0)

print(“width = \(r.width), height = \(r.height)”)

print(“width = \(r.width), height = \(r.height)”)

 

 

 

 

var r1 = Rect()

var r1 = Rect()

// 结构体属性访问 使用语法

// 结构体属性访问 使用语法

r1.show()

r1.show()

r.width = 99.9

r.width = 99.9

var r2 = r1

var r2 = r1

r.height = 120.5

r.height = 120.5

r2.show()

r2.show()

print(“width = \(r.width), height = \(r.height)”)

print(“width = \(r.width), height = \(r.height)”)

 

 

 

 

// 类是援引类型, 结构体之间的赋值其实是将r二指向了r一的内部存款和储蓄器存储空间,
所以他们是三个针对同样的壹块存储空间, 修改在那之中2个会潜移默化到此外二个

// 类是援引类型, 结构体之间的赋值其实是将r二指向了r一的内部存款和储蓄器存款和储蓄空间,
所以他们是七个针对一样的壹块存款和储蓄空间, 修改当中三个会影响到别的一个

/*

/*

r1.width = 100.0

r1.width = 100.0

 结构体构造器

 结构体构造器

r1.show()

r1.show()

 Swift中的结构体和类跟其余面向对象语言同样都有构造函数, 而OC是平素不的

 斯维夫特中的结构体和类跟其余面向对象语言同样都有构造函数, 而OC是不曾的

r2.show()

r2.show()

 斯威夫特供给实例化二个结构体或类的时候,全数的成员变量都不能够不有起先值,
构造函数的意思便是用来初阶化全体成员变量的, 而不是分配内存,
分配内部存款和储蓄器是系统帮我们做的.

 斯威夫特须求实例化贰个结构体或类的时候,全部的成员变量都必须有开头值,
构造函数的含义就是用来伊始化全数成员变量的, 而不是分配内部存款和储蓄器,
分配内部存款和储蓄器是系统帮大家做的.

 

 

 假使结构体中的全数属性都有暗许值, 可以调用()构造贰个结构体实例

 假使结构体中的全数属性都有默许值, 能够调用()构造3个结构体实例

/*

/*

 如若结构体中的属性未有私下认可值, 能够自定义构造器,
并在构造器中给全体的质量赋值

 假诺结构体中的属性未有暗许值, 能够自定义构造器,
并在构造器中给持有的属性赋值

 恒等运算符, 用于判定是还是不是是同贰个实例, 也正是是还是不是对准同一块存款和储蓄空间

 恒等运算符, 用于推断是或不是是同二个实例, 也便是是不是针对同壹块存款和储蓄空间

 其实结构体有一个私下认可的相继构造器, 用于在开端化时给具备属性赋值

 其实结构体有一个暗中认可的逐条构造器, 用于在初阶化时给拥有属性赋值

 有:  === !==  两类别型

 有:  === !==  二种档次

 */

 */

 */

 */

 

 

 

 

struct Rect2 {

struct Rect2 {

var r3 = Rect()

var r3 = Rect()

    var width:Double

    var width:Double

if r1 === r3

if r1 === r3

    var height:Double = 0.0

    var height:Double = 0.0

{

{

}

}

    print(“指向同1块存款和储蓄空间”)

    print(“指向同一块存款和储蓄空间”)

// 逐1构造器

// 逐1构造器

}

}

var r1 = Rect2(width: 10.0, height: 10.0)

var r1 = Rect2(width: 10.0, height: 10.0)

 

 

// 错误写法一: 顺序必须和结构体中成员的逐条一致

// 错误写法一: 顺序必须和结构体中成员的顺序一致

//var r1 = Rect2(height: 10.0, width: 10.0) // Error!

//var r1 = Rect2(height: 10.0, width: 10.0) // Error!

// 错误写法二: 必须带有全部成员

// 错误写法二: 必须含有全体成员

//var r1 = Rect2(width: 10.0)  //Error!

//var r1 = Rect2(width: 10.0)  //Error!

 

 

/*

/*

 结构体中定义成员方法

 结构体中定义成员方法

 在C和OC中结构体唯有性能, 而斯威夫特中结构体中还足以定义方法

 在C和OC中结构体只有质量, 而Swift中结构体中还可以定义方法

 */

 */

 

 

struct Rect3 {

struct Rect3 {

    var width:Double

    var width:Double

    var height:Double = 0.0

    var height:Double = 0.0

    // 1.给组织体定义3个办法, 该方法属于该结构体

    // 一.给组织体定义叁个情势, 该格局属于该结构体

    // 二.结构体中的成员方法必须利用有些实例调用

    // 2.结构体中的成员方法必须利用有些实例调用

    // 叁.成员方法能够访问成员属性

    // 3.成员方法能够访问成员属性

    func getWidth() -> Double {

    func getWidth() -> Double {

        return width

        return width

    }

    }

}

}

 

 

var r2 = Rect3(width: 10.0, height: 10.0)

var r2 = Rect3(width: 10.0, height: 10.0)

//结构体中的成员方法是和某些实例对象绑定在协同的, so, 哪个人调用,
方法中访问的特性正是哪个人

//结构体中的成员方法是和有个别实例对象绑定在同步的, so, 什么人调用,
方法中访问的属性正是哪个人

// 赚取r二这一个指标的宽窄

// 获得r二这几个目标的肥瘦

print(r2.getWidth())

print(r2.getWidth())

 

 

var r3 = Rect3(width: 50.0, height: 30.0)

var r3 = Rect3(width: 50.0, height: 30.0)

// 取得r三那个指标的增长幅度

// 获得r叁那些指标的拉长率

print(r3.getWidth())

print(r3.getWidth())

 

 

 

 

/** 结构体是值类型 **/

/** 结构体是值类型 **/

 

 

struct Rect4 {

struct Rect4 {

    var width:Double

    var width:Double

    var height:Double = 0.0

    var height:Double = 0.0

    func show() -> Void {

    func show() -> Void {

        print(“width = \(width) height = \(height)”)

        print(“width = \(width) height = \(height)”)

    }

    }

}

}

 

 

var r4 = Rect4(width: 10.0, height: 10.0)

var r4 = Rect4(width: 10.0, height: 10.0)

var r5 = r4

var r5 = r4

print(r4)

print(r4)

print(r5)

print(r5)

 

 

/*

/*

 赋值有两种状态

 赋值有三种景况

 壹.指向同一块存款和储蓄空间

 一.指向同1块存款和储蓄空间

 二.多少个例外实例, 但内容1律

 二.多少个例外实例, 但内容一样

 */

 */

r4.show()

r4.show()

r5.show()

r5.show()

r4.width = 20.0

r4.width = 20.0

 

 

// 结构体是值类型, 结构体之间的赋值其实是将r四中的值完全拷贝一份到r5中,
所以他们七个是见仁见智的实例

// 结构体是值类型, 结构体之间的赋值其实是将r4中的值完全拷贝1份到r5中,
所以他们三个是见仁见智的实例

r4.show()

r4.show()

r5.show()

r5.show()

 

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website