Swift基础知识:18.Swift类

在 Swift 中,类(Class)是一种用来创建具有共同属性和方法的对象的蓝图。与结构体(Structures)不同,类是引用类型,它在传递和赋值时是共享同一份数据。类具有面向对象编程的特性,包括封装、继承和多态。

以下是 Swift 中类的基本知识点和用法:

1. 定义类

使用 class 关键字来定义类。例如,定义一个表示人的类:

class Person {var name: Stringvar age: Intinit(name: String, age: Int) {self.name = nameself.age = age}func sayHello() {print("Hello, my name is \(name) and I am \(age) years old.")}
}
2. 属性和方法

类可以包含属性和方法,用来描述和操作类的实例。例如,创建一个 Person 类的实例并调用其方法:

let person1 = Person(name: "Alice", age: 30)
person1.sayHello()  // 输出:Hello, my name is Alice and I am 30 years old.
3. 继承

类可以继承自另一个类,从而获得父类的属性和方法,并可以在此基础上添加新的功能。例如,定义一个继承自 Person 类的 Student 类:

class Student: Person {var studentID: Stringinit(name: String, age: Int, studentID: String) {self.studentID = studentIDsuper.init(name: name, age: age)}override func sayHello() {print("Hello, my name is \(name), I am \(age) years old, and my student ID is \(studentID).")}
}
let student1 = Student(name: "Bob", age: 20, studentID: "12345")
student1.sayHello()  // 输出:Hello, my name is Bob, I am 20 years old, and my student ID is 12345.
4. 可选值属性

类的属性可以声明为可选值,表示该属性可以为 nil。例如,给 Student 类添加一个可选值的 advisor 属性:

class Student: Person {var studentID: Stringvar advisor: Person?init(name: String, age: Int, studentID: String) {self.studentID = studentIDsuper.init(name: name, age: age)}
}
let student2 = Student(name: "Charlie", age: 25, studentID: "54321")
student2.advisor = person1  // 将 advisor 属性设置为 person1

类在 Swift 中扮演着重要的角色,用于创建复杂的对象和模型,实现面向对象编程的特性,以及支持软件开发中的继承、多态和封装等概念。类的引用类型特性使得它们适合用于创建具有共享状态和行为的对象,以及在需要共享和传递对象实例时提供更高的灵活性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言:数组指针 函数指针

C语言:数组指针 & 函数指针 数组指针数组名 数组访问二维数组 函数指针函数指针使用回调函数 typedef关键字 数组指针 数组本质上也是一个变量,那么数组也有自己的地址,指向整个数组的指针,就叫做数组指针。 我先为大家展示…

041-WEB攻防-ASP应用HTTP.SYS短文件文件解析Access注入数据库泄漏

041-WEB攻防-ASP应用&HTTP.SYS&短文件&文件解析&Access注入&数据库泄漏 #知识点: 1、ASP-SQL注入-Access数据库 2、ASP-默认安装-数据库泄漏下载 3、ASP-IIS-CVE&短文件&解析&写入 演示案例: ➢ASP-默认安装-MDB数据库泄…

如何压缩pdf文件大小?3个有效的解决方法分享

如何压缩pdf文件大小?在办公中,PDF文件大小的压缩不仅有助于节省存储空间,使得大量的PDF文件可以更为高效地存储在有限的硬盘或云端空间中,还能显著加快文件在网络中的传输速度,特别是在处理大型或批量PDF文件时&#…

EXCEL使用VBA一键批量转换成PDF

EXCEL使用VBA一键批量转换成PDF 上图是给定转换路径 Sub 按钮1_Click() Dim a(1 To 1000) As String Dim a2 As String Dim myfile As String Dim wb As Workbook a2 Trim(Range("a2"))myfile Dir(a2 & "\" & "*.xls")k 0Do While m…

springcloud-网关(gateway)

springcloud-网关(gateway) 概述 \Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为其提供跨领域的关注,如:安全、监控/指标和容错 常用术语 Route(路由): 网关的基本构件。它由一个ID、一个目的地…

Lightfm学习记录

推荐参考资料 官方文档仓库地址论文地址LightFM推荐系统框架学习笔记LightFM推荐模型库(利于入门)how-i-would-explain-building-lightfm-hybrid-recommenders-to-a-5-year-old(用处不大)协同推荐 lightfm 根据用户已读诗词推荐(可能有用)Recommendation System in Python: L…

C#开发AGV地图编辑软件

C#自己开发AGV地图编辑软件: 1、自由添加和删除站点、停车位、小车、运行路径。 2、编辑得地图以XML文件保存。 3、导入编辑好地图的XML文件。 4、程序都是源码,可以直接在此基础上进行二次开发。 下载链接:https://download.csdn.net/d…

隐匿的炸弹 — C语言的隐式声明

前言 (1)如果有嵌入式企业需要招聘湖南区域日常实习生,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02gmail.com,此消息至2025年1月1日前均有效 (2&#xff0…

【Python】OpenCV-图像轮廓检测初学

图像轮廓检测初学 在图像处理领域中,轮廓检测是一项重要的任务,用于寻找并标定图像中的物体边缘。本文将介绍如何使用OpenCV库进行图像轮廓检测,并展示一个简单的示例代码。代码中的注释将详细解释每一步的操作。 1. 引言 图像轮廓检测是图…

JAVA学习-操作符.逻辑操作符

逻辑操作符用于在条件语句中进行逻辑判断,常用于控制程序的流程。 一、Java中的逻辑操作符有以下几种: 1. 逻辑与(&&): 当且仅当两个操作数都为true时,返回true;否则返回false。 bo…

基于PSO优化的CNN多输入时序回归预测(Matlab)粒子群算法优化卷积神经网络时序回归预测

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&…

PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)

先看图&#xff0c;后有完整代码 <?php $t "Excel数据转Sql查询系统字段半智能分析"; $s "Excel复制过来的二维结构表内容,分析查询条件&#xff01;"; $x "字段|最大长度|长度有|数字字段|空值存在|纯姓名|英文用户名|科学计数|是否等长|是否…

无痛法门,助力学习

**注&#xff1a;**本文摘自一位网友“我就是贺生啊”&#xff0c;博主觉得很有道理&#xff0c;便想记录下来分享给大家。仅个人想法&#xff0c;谨慎参考&#xff0c;也欢迎大家说出自己的想法。 引言 在我们学习新知识的时候&#xff0c;会觉得很痛苦&#xff0c;制定学习…

【git】提交信息写错了,使用 amend 或者 reset 修改最近一次的提交信息 ,修改上上次/以前的提交信息

如果你的提交信息写错了&#xff0c;比如下面&#xff0c;你想修改【初始化项目】这5个字 修改最近一次的提交新的两个办法 &#xff08;1&#xff09;使用 reset 把这个提交重置&#xff0c;然后重新提交&#xff0c;reset 的使用方法请参考这篇文章。但是 reset 这种方法只能…

Django学习笔记-HTML实现MySQL的图片上传

1.django项目编写index.html代码 创建form表单,路由指向upload,请求方式post,enctype设置"multipart/form-data", post请求添加{% csrf_token %},编写两个input,上传和提交 2.添加upload路由 3.views中创建upload 1).获取上传的文件,没有上传则返回"没有指定…

2024年度最高人气的编程语言

本期共享的是 —— 年度地球人气最高的编程语言。 根据我们对人力资源专家和开发者的年度调查&#xff0c;目前市场需求量最大的 10 种编程技术是&#xff1a; Python&#xff08;42.1% 的受访者对具备该技能的候选人有大量需求&#xff09;JS&#xff08;41.6%&#xff09;Ja…

IMX6ULL裸机之UART串口通信(中断)

由于正点原子的UART串口通信裸机例程&#xff0c;采用的是查询方式来进行串口通信&#xff0c;并未使用中断&#xff0c;导致CPU利用率较低&#xff0c;于是产生做本实验的动力。 查阅资料 通过《IMX6ULL参考手册》&#xff0c;得知其串口中断有 从55.4.5 Receiver中可以看出…

解决pycharm中PIL安装失败

问题&#xff1a;在调用pil时显示pil标红 我在设置中下载每次失败&#xff0c;显示 ERROR: Could not find a version that satisfies the requirement PIL (from versions: none) ERROR: No matching distribution found for PIL我尝试了很久&#xff0c;查看了一些博客 &a…

【笔记】【开发方案】APN 配置参数 bitmask 数据转换(Android KaiOS)

一、参数说明 &#xff08;一&#xff09;APN配置结构对比 平台AndroidKaiOS文件类型xmljson结构每个<apn>标签是一条APN&#xff0c;包含完成的信息层级数组结构&#xff0c;使用JSON格式的数据。最外层是mcc&#xff0c;其次mnc&#xff0c;最后APN用数组形式配置&am…

Java使用企业邮箱发送预警邮件

前言&#xff1a;最近接到一个需求&#xff0c;需要根据所监控设备的信息&#xff0c;在出现问题时发送企业微信进行预警。 POM依赖 <!-- 邮件 --> <dependency><groupId>com.sun.mail</groupId><artifactId>jakarta.mail</artifactId>…