Object-C--->Swift之(八)类和结构体

简介:

在Swift中类和结构体有高度的相似性。二者主要区别是:
1. 结构体不支持继承
2. 结构体不支持定义析构器
3. 结构体是值类型,而类是引用类型

定义类语法格式:

[修饰符]class 类名
{
零个到多个构造器
零个到多个属性
零个到多个方法
零个到多个下标
}

对一个类定义而言,包括3种最常见的成员:构造器、属性、方法,如果程序员没有为一个类提供构造器,则系统会为该类提供一个默认、无参数的构造器。一旦程序员为该类提供了构造器,则系统不会再为该类提供默认的构造器。

#定义结构体语法格式:

[修饰符]struct 结构体名
{
零个到多个构造器
零个到多个属性
零个到多个方法
零个到多个下标
}

结构体不能定义final,因为结构体不支持继承。如果程序员没有为结构体提供构造器,系统则会为该结构体提供两个构造器:一个无参数的构造器,一个初始化所有存储属性的构造器。

定义方法的语法如下:

[修饰符]func 方法名(形参列表)-[->返回值类型]
{
//具体功能代码
}

如果想定义类方法可以用class修饰符

class Person
{
var name:String=""
var age:Int=0
func say(content:String)
{
print(content)
}   
}

上面代码中并没有定义构造器,系统将为它提供一个默认的、无参数构造器,但这个默认的构造器不会为存储属性分配初始值,因此必须有程序为这些存储属性指定初始值。
注意:类是引用类型

        var p:Person
        p=Person()
        p.name="六小龄童"
        var p1=p
        p1.name="孙悟空"
        print(p.name)//输出孙悟空

引用类型比较

引用类型有两个运算符==和!==,这两个运算符只能用于引用类型量的比较,当两个引用类型的变量是否指向同一个实例,当两个引用变量指向同一个实例时,==比较得到true,当两个引用变量不指向同一个实例时,!==比较得到true

class Person
{
var name:String=""
var age:Int=0
init(name:String,age:Int)
{
self.name=name
self.age=age
 }
func say(content:String)
{
print(content)
}
}
var p1=Person(name:"孙悟空",age:2100)
var p2=Person(name:"六小龄童",age:48)
print(p1==p2)//输出false
print(p1 !== p2)输出true
var p3=p1
print(p1 == p3)//输出true

接着谈谈结构体吧

struct Monkey
{
var name:String
var age:Int
func say()
{
print("\(name)的年龄为\(age)")
}
 }
 var monkey=Monkey(name:"孙悟空",age:1500)
 print(monkey.name)

上面代码调用了Monkey带的两个参数的构造器中的一个创建实例,结构体默认会创建两个构造器:一个无参的构造器和一个初始化所有存储属性的构造器。
当调用无参构造器时

var monkey=Monkey()
 print(monkey.age)//输出0
目录
相关文章
|
15天前
|
Swift 索引 容器
Swift 泛型-关联类
Swift 泛型-关联类
20 1
|
1月前
|
Swift
Swift 中 struct(结构体)和 class(类)的区别
【10月更文挑战第10天】理解 struct 和 class 的区别对于正确使用 Swift 语言进行编程非常重要。在实际开发中,需要根据具体的需求和场景来选择合适的数据类型,以充分发挥它们的优势,提高代码的质量和效率。
|
20天前
|
存储 Swift iOS开发
Swift 类
10月更文挑战第29天
11 0
|
21天前
|
Swift iOS开发
Swift 结构体
10月更文挑战第28天
24 0
|
6月前
Swift4.0判断本函数是否在其它类有相同的方法
Swift4.0判断本函数是否在其它类有相同的方法
44 0
|
6月前
|
安全 Swift 开发者
【Swift开发专栏】Swift类的继承与多态
【4月更文挑战第30天】Swift中的OOP聚焦于类继承与多态,提供代码复用和类型安全。继承通过`class`和冒号实现,子类继承父类属性和方法,支持单继承以降低复杂性。多态借助协议和类型兼容实现,允许统一处理不同类型的对象。继承用于构建复杂类,多态则使代码更通用、可扩展。理解并运用这些概念对Swift开发者至关重要。
57 0
|
6月前
|
存储 定位技术 Swift
【Swift 开发专栏】Swift 中的枚举与结构体
【4月更文挑战第30天】本文探讨了Swift中的枚举与结构体,包括它们的定义、用法及差异。枚举用于表示有限状态或选项,如游戏状态;结构体适合表示具有特定属性和行为的数据,如商品信息。两者均可定义属性和方法,作为函数参数。枚举以整数存储,不可继承,结构体按属性存储且可继承,更灵活。理解两者特点有助于提升编程效率。
39 0
|
6月前
|
存储 数据处理 Swift
在Swift中,类(class)和结构体(struct)
在Swift中,类(class)和结构体(struct)
70 1
|
存储 安全 Swift
29 Swift如何进行类的初始化和反初始化
Swift如何进行类的初始化和反初始化
102 0
|
Swift
Swift - 如何判断一个对象是否是某个类
Swift - 如何判断一个对象是否是某个类
112 0