swift Class和struct的区别

为了能早日开发自己的APP,因此重新学习Swift。

与其它编程语言所不同的是,Swift并不要求你为类和结构创建独立的借口和实现文件,系统会自动生成面向其它代码的外部接口。

类和结构体的共同点:

  • 定义属性用于存储值
  • 定义方法用于提供功能
  • 定义附属脚本用于访问值
  • 定义构造器用于初始化值

与结构体相比,类还有如下的附加功能:

  • 继承允许一个类继承另一个类的特征

1、构造器
构造器是创建一个具体类型实例的方法。最简单的构造器就是一个没有任何参数实例方法,写作init。

2、自定义初始化
你可以根据输入的参数来自定义初始化过程和可选的属性类型,或者在初始化的时候修改静态属性。在这章节将会详细叙述。

初始化参数
你可以在构造器定义的时候提供一部分参数,在自定义初始化过程中定义变量的类型和名称。
初始化参和函数或者方法参数一样有着同样的功能

3、可选类型
如果你储存属性使用的是自定义的类型在逻辑上允许值为空-或者他们的值并不在构造器中初始化,或者他们被允许为空。可以定义一个可选类型的属性。可选类型属性是一个自动初始化值为nil,表示这个属性有意在构造器中设置为“空值”。

4、类的初始化和继承

一个类的所有存储属性-包括从父类继承而来的属性-都必须在初始化的时候设置初始值。

5、值类型和引用类型

值类型?就是在赋值或给函数传递参数的时候,创建一个副本,把副本传递过去,这样在函数调用过程中不会影响到原始数据。

引用类型?在传递参数的过程中,是把数据本身传递过去,这样在函数调用过程中会影响原始数据。

时间: 2024-10-06 00:33:05

swift Class和struct的区别的相关文章

ios8 swift开发:let var 区别讨论

localhost:~ hejiasheng$ xcrun swift Welcome to Swift! Type :help for assistance. 1> var a:Int a: Int = 0 2> let b:Int <REPL>:2:5: error: 'let' declarations require an initializer expression let b:Int ^ 2> let b = 5 b: Int = 5 3> b = 6 4&

浅谈c++中class与struct的区别

本文主要讨论class与struct的区别.为什么是区别而不是共同点呢?因为在绝大部分情况下,class和struct其实是可以互相替换的, 那么区别到底有哪些呢,我总结了一下大概有如下3点: 1.成员的默认访问权限不同.如果我们使用struct关键字,则定义在第一个访问说明符之前的成员是public的:相反,如果我们使用class关键字,则这些成员是private的. class A //class { int x; public: A():x(0){} }; struct B<span st

class、interface、struct的区别

1 struct和class有什么区别 1.1默认的继承访问权限 Struct是public的,class是private的. 你可以写如下的代码: struct A { char a; }; struct B:A { char b; } 这个时候B是public继承A的.如果都将上面的struct改成class,那么B是private继承A的.这就是默认时的继承访问权限.所以我们在平时写类继承的时候,通常会这样写: struct B:public A 就是为了指明是public继承,而不是用默

C++中class与struct的区别(struct的类型名同时可以作为变量名)

通常我们知道的区别: (一)默认继承权限.如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理: (二)成员的默认访问权限.class的成员默认是private权限,struct默认是public权限. 除了这两点,class和struct基本就是一个东西.语法上没有任何其它区别. 昨天发现一个不知道算不算是区别的东西: struct的类型名同时可以作为变量名,显然class是不可以的,也可以理解,因为class各类型变量定义时直接是类名

Swift中 Class和Struct的区别

类(Class)和结构体(Struct)区别 1.  内存管理方式不一样, 类引用类型, 分配在堆上. 结构体值类型,分配在栈上. 2. 类, 有析构. 结构体不能有析构, playground中测试直接卡死. 3. 结构体构造函数, 会自动生成带参数的构造器.类不会对有初始化赋值的属性, 生成带参数的构造器. 2. 类有继承特性,结构体没有继承特性,自然也不存在对成员属性和成员方法, 类属性和类方法的重载. 正因为结构体没有继承, 所以操作符函数, 需要static修饰, 而不能用class修

class和struct的区别

1.最主要的区别,默认的继承访问权限.struct是public的,class是private的. 2.关于使用大括号初始化 class和struct如果定义了构造函数的话,都不能用大括号进行初始化 如果没有定义构造函数,struct可以用大括号初始化. 如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化. 3.关于默认访问权限 class中默认的成员访问权限是private的,而struct中则是public的. 4.关于继承方式 class继承默认是private继

typedef struct和struct 的区别 用途

分三块来讲述:1 首先:      在C中定义一个结构体类型要用typedef:        typedef struct Student        {            int a;        }Stu;于是在声明变量的时候就可:Stu stu1;如果没有typedef就必须用struct Student stu1;来声明这里的Stu实际上就是struct Student的别名.另外这里也可以不写Student(于是也不能struct Student stu1;了)       

[C#基础知识]Class和Struct的区别

class和struct语法几乎相同,但其本质却截然不同:class是引用类型,struct是值类型,也就是说在内存中存储方式有别,由此产生的一系列差异性. class(类)是面向对象编程的基本概念,是一种自定义数据结构类型,通常包含字段.属性.方法.构造函数.索引器.事件等.在.NET中,所有的类都继承自System.Object类,是一种引用类型,也就是说,当我们new出一个类的实例时,对象保存了该实例实际数据的引用地址,而对象的值保存在托管堆中. struct(结构)是一种值类型,用于将一

Swift - String与NSString的区别,以及各自的使用场景

String是Swift里新增加的类型,它与原来的NSString可以很方便地互相转换.但在实际开发中,我们该如何选择? 1,能使用String类型就尽量使用String类型,原因如下: (1)现在Cocoa里所有的API都能接受和返回String类型,所以也没必要特地转换下. (2)Swift的String是struct,而NSString类是NSObject,所以String更符合字符串“不变”这一特性.同时,在不触及NSString特有操作和动态特性的时候,使用String的方法,在性能上