By admin in 4858.com on 2019年4月21日

 

 

 

 

/*

/*

/*

/*

 类的中坚概念

 类的基本概念

 结构体:

 结构体:

 Swift中的结构体和类万分相像, 然则又有分化之处

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

 结构体是用于封装分歧或壹致档案的次序的数据的, Swift中的结构体是一类项目,
能够定义属性和措施(以致构造方法和析构方法等)

 结构体是用以封装不一样或雷同等级次序的数量的, 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)”)

// 假如结构体的性情有暗中认可值, 能够一向利用()构造1个结构体

// 就算结构体的性质有暗中同意值, 可以一直动用()构造3个结构体

    }

    }

// 若是结构体的质量未有默许值, 必须选用各样协会器实例化结构体

// 假使结构体的个性没有默许值, 必须运用各样协会器实例化结构体

}

}

 

 

// 类未有各种构造器

// 类未有种种构造器

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一的内部存款和储蓄器存款和储蓄空间,
所以他们是五个针对一样的1块存储空间, 修改个中四个会潜移默化到其余二个

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

/*

/*

r1.width = 100.0

r1.width = 100.0

 结构体构造器

 结构体构造器

r1.show()

r1.show()

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

 斯威夫特中的结构体和类跟别的面向对象语言一样都有构造函数, 而OC是尚未的

r2.show()

r2.show()

 斯维夫特供给实例化3个结构体或类的时候,所有的分子变量都必须有开头值,
构造函数的含义便是用来早先化全数成员变量的, 而不是分配内部存款和储蓄器,
分配内部存款和储蓄器是系统帮大家做的.

 Swift必要实例化二个结构体或类的时候,全部的分子变量都没办法不有开首值,
构造函数的含义正是用来初步化全数成员变量的, 而不是分配内部存储器,
分配内部存款和储蓄器是系统帮我们做的.

 

 

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

 尽管结构体中的全数属性都有私下认可值, 能够调用()构造二个结构体实例

/*

/*

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

 如若结构体中的属性没有默许值, 能够自定义构造器,
并在构造器中给具有的品质赋值

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

 恒等运算符, 用于决断是或不是是同一个实例, 也正是是或不是对准同壹块存款和储蓄空间

 其实结构体有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块存款和储蓄空间”)

// 逐壹构造器

// 逐一构造器

}

}

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

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

 

 

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

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

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

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

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

// 错误写法2: 必须带有全数成员

//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

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

    // 一.给协会体定义几个艺术, 该方法属于该结构体

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

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

    // 三.分子方法能够访问成员属性

    // 三.分子方法能够访问成员属性

    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二这些目的的升幅

// 获得r2这么些目标的急剧

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三这些目的的幅度

// 获得r3那几个目的的大幅

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块存款和储蓄空间

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

 二.几个不等实例, 但内容一致

 二.两个不相同实例, 但内容同样

 */

 */

r4.show()

r4.show()

r5.show()

r5.show()

r4.width = 20.0

r4.width = 20.0

 

 

// 结构体是值类型, 结构体之间的赋值其实是将r4中的值完全拷贝一份到r5中,
所以他们八个是不一致的实例

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

r4.show()

r4.show()

r5.show()

r5.show()

4858.com , 

 

发表评论

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

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有