# Day7--物件兄弟党:类别与结构

就以基本面来说,类别跟结构都会有一些共同的东西:

  1. 属性(property):用於储存值
  2. 方法(method):用於提供功能
  3. 下标(subscript):用於存取值
  4. 建构器(initializer):用於生成初始化值
  5. 扩展(extension):增加预设实作的功能
  6. 协定(protocol):对某类别提供标准功能

而上述这些东西因为内容、功能各异,将来会有一些相关的说明。
然而类别(class)比起结构(struct)又多出一些东西:

  1. 继承(inherit):类别可以继承另一个类别的内容
  2. 解构器(deinitializer)允许一个类别实体释放任何其所被分配的资源
  3. 型别转换允许在执行时检查和转换一个类别实体的型别
  4. 参考计数允许对一个类别实体的多次参考(资料来源:Swift起步走)

上述这些东西大抵上是我们在字面上所见的异同,不过就样态上来说,类别与结构会长得像下面两者:

class、struct里面可以装类别的属性(property)、方法(method)、其他可以定义的特性。
刚开始接触class、struct的人可能比较不熟悉属性、方法这两个词:

  1. 类别、结构内的常数、变数,便会被称为是属性(property),如下:

像name、height就会是Human里面的属性。

  1. 类别、结构里面的函式,即称为方法(method):

如func的部分,我设置了一个会回传睡觉的函式,在实体化为Adam之後,才可以使用Adam来呼叫他下面的方法,即.sleep( )

其他的内容,如下标(subscript)、建构器(intialize)、扩展(extension)、协定(protocol)等内容较为复杂,之後文章会陆续提及。

总之,属性与方法是类别与结构比较容易理解的内容,而要使用一个在class或struct里面的函数,必须经过实体化的过成,生成一个实例(instance),如下

就前一个例子来说,我们制定了一个Human的struct,但实际上要取用这个Human里面的东西,无论是属性(property)或方法(method),都要经过 let 某个东西 =类别或结构名称()这个过程。

才会生成一个实际使用的实体(instance)

而这时候,我们就可以对Adam为所欲为了,不管是要叫他睡觉也好或啥鬼的。

综合上述,这篇大抵上提到了几个内容:
类别(class)、结构(struct)的相同、相异处(因为内容比较繁杂,所以之後另开篇章描述)

在类别、结构里面的常数(constant)、变数(variable)就是属性(property),而函式(function)被称为方法(method)

我们建构了class、struct里面的属性、方法後,如果要使用它,就必须要把它变成实体(instance),才能实际的使用其中定义的属性与方法。

tags: 铁人赛

<<:  第7天

>>:  Day 22 Azure machine learning: set environment- 准备一个大家都能用的环境

企划实现(17)

跳转到IG、youtube 常常会看到许多程序有一个可以跳转到他们自己的ig、youtube的功能,...

【从实作学习ASP.NET Core】Day08 | 後台 | 新增商品类别

今天来处理昨天建立的 Category 商品类别模型 假如说商店有机会扩大经营的话,那商品类别势必会...

DAY28 学习30天的c++

if叙述 if叙述(if statement):是非结构。若条件运算式的结果为1(ture)则执行i...

Day17-JDK堆栈跟踪工具:jstack(二)

前言 延续着上篇内容,这篇要继续来介绍jstack有些什麽options可以使用 options 介...

[Golang]效能测试(Benchmark)简介-心智图总结

1. Benchmark,是GO语言用来做函数的效能测试。 2. Go语言对效能测试函数的名称与函数...