Swift学习笔记-面向对象
来源:互联网 发布:ipad淘宝没有微淘 编辑:程序博客网 时间:2024/05/18 23:54
//1.Swift可以定义枚举,结构体,类,3种面向对象的类型,面向对象的两大核心是类和对象//2.面向对象编程的3大特征,封装,继承(Swift使用协议弥补了单继承灵活性不足的缺点),多态//3.C语言中结构体和枚举不具有面向对象的特征,Swift中多了结构体和枚举这两种程序单元//1.枚举//Swift的枚举不像c那么简单,是完全重新定义的类型,支持计算属性,实例方法,类型方法,支持定义构造器来完成初始化,允许通过扩展来增强原有枚举的功能,允许遵守指定协议来提供标准的功能//1.1定义枚举,使用enum//语法格式,枚举名首字母大写/*** enum 枚举名{//使用case关键字列出所有的枚举值//枚举的其他成员}*/enum People{ //每一个case定义一个枚举实例 case Man case Female}enum StrongPeople{ //一个case 定义多个枚举实例 case Man,Female}/*** 面向对象编程的五大点(牢记)1,声明变量2.创建实例3,访问类型属性4调用类型方法5,派生子类,但是Swift只有类支持继承,枚举和结构体不支持继承*///使用枚举声明变量var manPeople :StrongPeople//赋值manPeople = StrongPeople.Man//当Swift能推断出枚举类型时,允许省略枚举名前缀//manPeople = .Manprintln(manPeople)//1.2枚举值和switch语句var choosePeople = StrongPeople.Man//使用switch语句判断枚举//是个男的switch (choosePeople){case StrongPeople.Man: println("是个男的")case StrongPeople.Female: println("是个女的")}//带有原始值的枚举//需要注意的是,Swift可以通过已指定的原始的枚举来推断它前后的枚举值/*** enum 枚举名 : 原始类型{case 枚举值 = 原始值}*///定义枚举,原始值类型为Intenum Weekday : Int{ //使用一个case,swift推断Monday= 0,Thursday = 6,Friday = 7 case Monday,Tuesday = 1,Wednesday = 5,Thursday,Friday}//如果指定的原始值类型不是Int,而是String,Character,Swift不能推断枚举的原始值enum Season : Character{ case Spring = "S" case Summer = "U"}var day = Weekday.Monday//获取枚举值的原始值println("\(day.rawValue)")//0day = .Thursdayprintln("\(day.rawValue)")//6//根据原始值获取枚举值//is Uvar mySea = Season(rawValue: "S")if mySea != nil{ switch mySea! { case .Spring: println("is U") case .Summer: println("is S") }}//rawValue是枚举值的属性,该属性用于获取枚举的原始值//关联值,Swift不要求各枚举成员具有相同的关联值 associated value/*** 语法格式case 枚举值(元组语法)*///定义枚举enum Plant{ //不同枚举值可以携带数量不等,类型不等的关联值 case Mercury(weight:Double,density:Double,name:String) case valus(Double,Double) case Jupiter case Saturn}//引用类型的比较//===,!==返回true,false//self关键字class Dog1{ //实现一个jump的方法 func jump() { println("正在jump") } //实现一个跑的方法 func run() { jump()// self.jump() println("正在跑") }}//局部变量隐藏存储属性class Wolf{ //定义两个属性 var name : String = "" var age : Int = 2 //显示定义带参数的构造器 init (name :String ,age : Int) { //当局不变量隐藏存储属性时 //可用self代表调用该构造器正在初始化的实例 //这个可以为该构造器正在初始化的实例的存储属性赋值 self.name = name self.age = age } //定义一个info func info() { println("\(name),\(age)") }}var wolf = Wolf(name:"JiangJum", age: 24)wolf.info()//JiangJum,24//当self作为方法的调用者class ReturnSelf{ var age : Int = 0 func grow() -> ReturnSelf { age++ return self }}var rt = ReturnSelf()rt.grow() .grow() .grow()println("\(rt.age)")//3struct FixedLengthRange { var strat :Int let length : Int //由于系统会为该结构体提供初始化所有存储属性的构造器 //因此程序可以在定义时不为实例存储属性指定初始值}//初始化var rg = FixedLengthRange(strat: 2, length: 3)println("\(rg.strat),\(rg.length)")//2.3rg.strat = 5//rg.length = 6//常量存储属性,无法重新赋值struct FkRange { //定义两个变量存储属性 var start : Int var length : Int}let rg1 = FkRange(start: 3, length: 4)println("\(rg1.start),\(rg1.length)")//3,4//rg1.strat = 4//编译错误//由于实例被赋值给一个let声明的常量,因此FkRange就是一个不可变的,不允许修改//lazy load 懒加载class Dept3{ var id : Int var info : String init (id : Int) { self.id = id //暂停2秒 NSThread.sleepForTimeInterval(2) self.info = "模拟读取数据" }}class User { var id : Int = 0// var dept = Dept3(id: 4) lazy var dept = Dept3(id: 3) var nicks = [String]()}//创建user实例var user = User()user.nicks.append("JiangJun")user.nicks.append("jiangjum")println(user.nicks)
0 0
- Swift学习笔记-面向对象
- Swift学习笔记|Swift面向对象
- Swift学习笔记 -面向对象(2)
- Swift学习笔记-面向对象3
- 面向对象学习笔记
- 学习笔记--面向对象
- 面向对象学习笔记
- Swift学习4——面向对象
- Swift学习笔记之字典,循环,可选变量,函数签名,面向对象
- PHP学习笔记--面向对象
- C++面向对象(学习笔记)
- java面向对象学习笔记
- java学习笔记-----面向对象
- JAVA学习笔记----面向对象
- java面向对象学习笔记
- C++面向对象学习笔记
- 学习笔记-面向对象基本概念
- 学习笔记--面向对象继承
- MySQL中tinytext、text、mediumtext和longtext详解
- 分布式进阶(十四)分布式开发学习感触
- 名言
- 系统调用和C库之间是什么关系?
- Android 实现记住用户名和密码的功能
- Swift学习笔记-面向对象
- Android 实现记住用户名和密码的功能
- Java设计原则---封装变化和面向接口编程
- eXtremeDB embedded mode and CSMODE
- Android 实现记住用户名和密码的功能
- 第13周-程序阅读(1)
- Android 实现记住用户名和密码的功能
- 第13周-程序阅读(2)
- HDU-2015