`
文章列表
原创文章,欢迎转载。转载请注明:关东升的博客  Swift中的继承只能发生在类上,不能发生在枚举和结构体上。一个类可以继承另一个类的方法、属性、下标等特征,当一个类继承其他类时,继承类叫子类,被继承类叫父类(或超类)。子类继承父类后,可以重写父类的方法、属性、下标等特征。  为了了解继承性,看这样一个场景:一位面向对象的程序员小赵,在编程过程中需要描述和处理个人信息,于是他定义了类Person,如下所示: class Person { var name: String var age: Int func description() -> S ...
 原创文章,欢迎转载。转载请注明:关东升的博客   与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程。在析构过程中也会调用一种特殊的方法deinit,称为析构函数。析构函数deinit没有返回值,也没有参数,也不需要参数的小括号,所以不能重载。  下面看看示例代码:  class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width ...
Swift 2.0学习笔记(Day 39)——构造函数重载 原创文章,欢迎转载。转载请注明:关东升的博客   构造函数作为一种特殊方法,也可以重载。 Swift中构造函数可以多个,他们参数列表和返回值可以不同,这些构造函数构成重载。 示例代码如下: class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width self.height ...
原创文章,欢迎转载。转载请注明:关东升的博客   构造函数的主要作用是初始化实例,其中包括:初始化存储属性和其它的初始化。在Rectangle类或结构体中,如果在构造函数中初始化存储属性width和height后,那么在定义他们时就不需要初始化了。 Rectangle类代码如下: class Rectangle { var width: Double var height: Double init() { width = 0.0 height = 0.0 } }   如果存储属性在构造函 ...
原创文章,欢迎转载。转载请注明:关东升的博客   结构体和类的实例在构造过程中会调用一种特殊的init方法,称为构造函数。构造函数没有返回值,可以重载。在多个构造函数重载的情况下,运行环境可以根据它的外部参数名或参数列表调用合适的构造函数。  默认构造函数 结构体和类在构造过程中会调用一个构造函数,即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数。下面看示例代码: lass Rectangle { var width: Double = 0.0 var height: Double = 0.0 } var ...
原创文章,欢迎转载。转载请注明:关东升的博客 静态方法与静态属性类似,Swift中定义了静态方法,也称为类型方法。静态方法的定义与静态属性类似,枚举和结构体的静态方法使用的关键字是static;类静态方法使用的关键字是class或static,如果使用static定义,则该方法不能在子类中被重写(override);如果使用class定义,则该方法可以被子类重写。  结构体静态方法 看一个结构体静态方法的示例,代码如下: struct Account { var owner: String = "Tony" //声 ...
原创文章,欢迎转载。转载请注明:关东升的博客 我先来设计一个类:有一个Account(银行账户)类,假设它有3个属性:amount(账户金额)、interestRate(利率)和owner(账户名)。 在这3个属性中,amount和owner会因人而异,不同的账户这些内容是不同的,而所有账户的interestRate都是相同的。 amount和owner属性与账户个体有关,称为实例属性。
原创文章,欢迎转载。转载请注明:关东升的博客   计算属性本身不存储数据,而是从其他存储属性中计算得到数据。  计算属性概念: 计算属性提供了一个getter(取值访问器)来获取值,以及一个可选的setter(设置访问器)来间接设置其他属性或变量的值。计算属性的语法格式如下: 面向对象类型类型名 { 存储属性 ...... var 计算属性名: 属性数据类型 { get { return 计算后属性值 } ...
原创文章,欢迎转载。转载请注明:关东升的博客     Swift中的属性分为存储属性和计算属性,存储属性就是Objective-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回数据。  存储属性可以存储数据,分为常量属性(用关键字let定义)和变量属性(用关键字var定义)。  存储属性概念:
原创文章,欢迎转载。转载请注明:关东升的博客   类和结构体非常相似,很多情况下没有区别。如果你是设计人员在进行系统设计时候,是将某种类型设计成为类还是结构体?  类和结构体异同: 类和结构体都有如下功能: 定义存储属性 定义方法 定义下标 定义构造函数 定义扩展 实现协议  只有类才有的功能: 能够继承另外一个类 能够核对运行期对象的类型 析构对象释放资源
  原创文章,欢迎转载。转载请注明:关东升的博客   访问级别: Swift提供了3种不同访问级别,对应的访问修饰符为:public、internal和private。这些访问修饰符可以修饰类、结构体、枚举等面向对象的类型,还可以修饰变量、常量、下标、元组、函数、属性等内容。 <!--[if !supportLists]-->l<!--[endif]-->public。可以访问自己模块中的任何public实体。如果使用import语句引入其他模块,我们可以访问其他模块中的public
原创文章,欢迎转载。转载请注明:关东升的博客    在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下。  1. 可选类型中的问号(?) 声明这个类型是可选 ...
原创文章,欢迎转载。转载请注明:关东升的博客   可选类型: 我们先看看如下代码: var n1: Int = 10 n1 = nil //编译错误 let str: String = nil //编译错误   Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!
原创文章,欢迎转载。转载请注明:关东升的博客   在Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么含义呢?这些符号都与可选类型和可选链相关,下面来看看可选链。   可选链: 类图:    它们之间是典型的关联关系类图。这些类一般都是实体类,实体类是系统中的人、事、物。Employee通过dept属性与
  原创文章,欢迎转载。转载请注明:关东升的博客    Swift中的类和结构体定义的语法是非常相似的。类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 {     定义类的成员
Global site tag (gtag.js) - Google Analytics