swift:入门知识之类和对象
1、swift中使用class创建一个类。一个类的声明则是在类里作为常量或变量声明的,除了是在类的上下文中。在方法和函数中也是这么写的。
2、swift中使用init(...)作为初始化构造函数
3、swift中使用构造函数初始化成员变量时,格式为 : self.name = name.构造器的声明跟函数一样,除了会创建类的实例。每一个属性都需要赋值,无论在声明里还是在构造器里。
4、swift中使用deinit来创建一个析构函数,由系统自动调用来撤销对象,进行内存的清理工作
5、swift中子类继承父类时,一冒号:隔开。在继承标准根类时无需声明,所以你可以忽略超类
6、swift中子类重写父类的方法时,必须使用关键词override重载超类中的实现,如果没有这个关键词,编译器会报错
7、swift中可以设置get和set方法,例如如下所示:
var perimeter: Double {
//getter方法
get{
return slideLength
}
//setter方法
set{
slideLength = newValue/2
}
}
具体举例如下:
定义一个没有构造函数的类Shape
//声明一个没有构造函数的类
class Shape{
//成员变量,边数
var numberOfSides =
//成员方法
func simpleDescripton()->String{
return "A shape with \(numberOfSides) sides."
}
}
//创建对象
var shape = Shape() //{numberOfSides 0}
//设置成员变量
shape.numberOfSides = 4
//调用成员方法
shape.simpleDescripton() //"A shape with 4 sides"
定义一个子类NameShape继承上面的父类Shape,子类带一个init构造函数和一个deinit析构函数
//声明带构造函数的类,继承父类Shape
class NameShape : Shape{
//形状的名字
var name:String //初始化方法
init(name:String){
self.name = name
} //虚构方法,不可以显示调用,系统会在程序执行结束后自动调用,清理内存
deinit{
println("deinit")
} //成员方法,重写父类的方法必须要加上关键字 override
override func simpleDescripton()->String{
return "A shape with name:\(name) have \(numberOfSides) sides."
}
}
//创建对象,参数名不可以省略
var nameshape:NameShape = NameShape(name:"rect") //{{numberOfSides 0} name"rect"}
//设置成员变量
nameshape.numberOfSides = 4 //{{numberOfSides 4} name "rect"}
//调用成员方法
nameshape.simpleDescripton() //"A shape with name:rect have 4 sides"
定义一个正方形类Square继承上面的父类NameShape,其实它也继承了根父类Shape,Square继承它父类所有公有的属性和方法,在初始化时,子类可以借助父类的初始化方法给它们共有的属性赋初值
//继承父类NameShape
class Square: NameShape {
//边长
var slideLength:Double = 0.0
//子类自己的初始化方法
init(slideLength:Double,name:String)
{
self.slideLength = slideLength //调用父类的初始化方法
super.init(name: name) //直接用从父类继承的边数属性
numberOfSides =
} //设置对象的set和get方法
var perimeter: Double {
//getter方法
get{
return slideLength
}
//setter方法
set{
slideLength = newValue/
}
} //定义求面积的方法
func area() -> Double{
return slideLength*slideLength
} override func simpleDescripton() -> String {
return "A shape with name:\(name) have \(numberOfSides) sides.its area is \(area())"
}
}
//创建对象时的参数名不可以省略
var square:Square = Square(slideLength:,name:"正方形")
square.perimeter = 6
square.simpleDescripton() //"A shape with name:正方形 have 4 sides .its area is 9.0"
square.slideLength //3
可以给参数的参数名再设置一个名字,函数内部使用参数的原始名,调用时使用设置参数名的名称,即外部名,前一章函数部分已经介绍过
class Counter{
var count:Int = 0
//给第二个参数times再设置一个名称numberOfTimes,不过函数内部使用的还是times
func incrementBy(amount: Int, numberOfTimes times: Int){
count += amount * times
}
}
var counter = Counter() //创建一个对象 //调用函数时,用的第二个参数的名称为numberOfTimes
counter.incrementBy(, numberOfTimes: ) //14
swift:入门知识之类和对象的更多相关文章
- Swift经典知识整理
1 关于Swift Swift 是一种适用于 iOS 和 OS X 应用的全新编程语言,它建立在最好的 C 和 Objective-C 语言之上,并且没有 C 语言的兼容性限制.Swift 采用安全 ...
- Swift入门篇-闭包和函数
今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 ...
- Swift入门篇-循环语句
今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...
- Swift入门篇-字符串和字符
今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...
- Swift入门篇-基本类型(2)
现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...
- Swift入门篇-Hello World
提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...
- Swift入门(五)——数组(Array)
集合 集合的定义 Swift中提供了两种数据结构用于存放数据的集合,各自是数组(Array)和字典(Dictionary). 他们的主要差别在于数组中的元素由下标确定.而字典中的数据的值由数据的键(K ...
- zabbix入门知识
zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...
- 我的Python笔记补充:入门知识拾遗
声明:本文整理借鉴金角大王的Python之路,Day1 - Python基础1,仅供本人学习使用!!! 入门知识拾遗 一.bytes类型 二.三元运算 1 result = 值1 if 条件 else ...
随机推荐
- algorithm之不变序列操作
概述:不变序列算法,参见http://www.cplusplus.com/reference/algorithm/ /* std::for_each template <class InputI ...
- JS多种方法实现随机颜色;
JS随机颜色有很多地方要用到:比如大家看到很多标签连接都是五颜六色.实现随机颜色的方法有多种,下面来看看具体的实现代码: 方法一: var getRandomColor = function() { ...
- 使用SecureRandom类替代Random类
java.util.Random 产生确定的值可能被恶意的程序预测到. java.security.SecureRandom 产生不确定的随机数不能被预测到. 所以优先使用java.security. ...
- LAMP环境的搭建
[一些前言废话]一名web开发尤其是后端不懂LAMP环境的搭建,那就摊上事了,有些人说他一直用win下的wampServer这种傻瓜式环境搭建,用的挺好的,也有人说他用云服务器,搭配“一键搭建LAMP ...
- 【POJ】【2601】Simple calculations
推公式/二分法 好题! 题解:http://blog.csdn.net/zck921031/article/details/7690288 这题明显是一个方程组……可以推公式推出来…… 然而这太繁琐了 ...
- 【BZOJ】【1221】【HNOI2001】软件开发
网络流/费用流 说是这题跟餐巾计划一模一样……但我没做过啊……so sad 二分图建模是很好想的,但是要控制流量跟用了的毛巾一样多……oh my god 事实上对于每一天我们无论如何都是要消耗n[i] ...
- 您可能不知道的ASP.Net小技巧
<!-- 页码和简介 --> 1. 在提交页面之后,保持滚动条的位置 可以在page指令上加上MaintainScrollPositionOnPostback指令 <%@ Page ...
- SOA之(1)——SOA架构基础概念
在深入探讨什么是面向服务的架构(SOA)之前,先建立一些基本的概念和术语的基本描述而非严格定义,所以也许有些定义在业内还存留争议,此处暂且忽略. 架构基础 技术架构(Technology Archit ...
- Sqli-labs less 16
Less-16 本关我们的处理方法和less15是一样的,同样的使用延时注入的方法进行解决.这里直接从源代码中看到对id进行 ("id")的处理.(请自行测试) 提交的payloa ...
- HDU 4027 Can you answer these queries?(线段树,区间更新,区间查询)
题目 线段树 简单题意: 区间(单点?)更新,区间求和 更新是区间内的数开根号并向下取整 这道题不用延迟操作 //注意: //1:查询时的区间端点可能前面的比后面的大: //2:优化:因为每次更新都 ...