//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

//-------------------- 类和属性 --------------------

class Role{

    //成员属性
var id = ""
var money = //静态属性
static var method = "RNA" //子类可以重写的静态属性
class var url :String {
return "Malcolm Feng"
} //成员方法
func playgame() -> String{
return "playing....(*&^%$#$%^&*(GFR&*"
}
//静态方法
static func playboll() -> String{
return "playing boll.......23456789"
}
//子类可重写的静态方法
class func playwater() -> String{
return "playing water......aliuehflkauweflk"
} } // 1.调用成员属性
let hero = Role()
hero.id = ""
hero.money =
hero.id // 2.调用成员方法
hero.playgame() // 3.调用静态属性
Role.method
Role.url // 4.调用静态方法
Role.playwater()
Role.playboll() //-------------------- 类的继承 -------------------- class Myrole :Role{
var method :String = "DNA"
override class var url :String { //重写父类静态属性
return "FengDianLong"
} override func playgame() -> String{
return "play game by child class"
} override static func playwater() -> String{
return "playing water by child class"
} } Myrole.method
Myrole.url
Myrole.playwater()
Myrole.playboll() //-------------------- 结构体和属性 --------------------
struct Me{
static var name = "Malcolm"
static var url = "http://malcolm.cn"
var thanks = ""
var information :String {
return Me.name + " 的网站:" + Me.url + thanks
}
}
//调用静态属性
print(Me.name) //调用成员属性
var me = Me(thanks:"谢谢光临")
print(me.information) //for i in Array(1...100){
// print(i)
//}
//print("1") //-------------------- 下标 -------------------- //常见的下标
var array = ["feng","dian","long"]
array[] var dict = ["name":"fengdianlong", "age":"", "langruage":"swift"]
dict["name"] struct CycleArea{
func area(radius: Double) -> Double {
return Double.pi * pow(radius, )
}
subscript(radius : Double) -> Double{
return Double.pi * pow(radius, )
}
} //调用方法
var cycleArea = CycleArea()
cycleArea.area(radius: ) //调用subscript
cycleArea[] //-------------------- 初始化 -------------------- //**********类 的参数初始化
class Room {
var season : String
var temp : Int init(season: String, temp:Int) {
self.season = season
self.temp = temp
}
}
let room = Room(season: "spring", temp:)
room.season
room.temp //**********结构体 的参数初始化
struct RoomStruct{
var season : String
var temp : Int
} let roomStruct = RoomStruct(season : "summer", temp : )
roomStruct.season
roomStruct.temp //**********便利构造器
class Food{
var name :String init(name :String) {
self.name = name
} convenience init(){
self.init(name: "水果")
}
} let food = Food()
food.name //**********可失败构造器 struct Animal{
var name : String init?(name : String) {
if name.isEmpty{
print("没有给动物取名哦")
return nil
}
self.name = name
}
} let cat = Animal(name:"")
cat?.name let dog = Animal(name:"狗狗")
dog?.name //-------------------- 异常 --------------------
//创建异常枚举
enum LearningObs : Error{
case noMethod, noReading, noTool(tool : String)
} //创建学习ios开发的方法
func iosDev(method: Bool, style : Bool, hasTool : Bool) throws{
guard method else {
throw LearningObs.noMethod
}
guard style else {
throw LearningObs.noReading
}
guard hasTool else {
throw LearningObs.noTool(tool: "缺Mac电脑")
}
} //买电脑
var budget = func buy(tool:String){
if budget >= {
budget -=
print("您已经购买Mac电脑")
} else {
print("资金不足")
}
} //调用学习ios开发的方法 捕获异常 进行处理
do{
try iosDev(method: false, style: false, hasTool: false)
print("开始学习IOS开发")
}catch LearningObs.noMethod {
print("没有好的学习方法")
}catch LearningObs.noReading {
print("不想看书")
}catch LearningObs.noTool(let tool) {
print("没有mac电脑")
buy(tool: "mac")
} //********* 不用关注异常的细节,可以使用 try? try!
if let result = try? iosDev(method: true, style: true, hasTool: true){
print("恭喜进入学习")
}else{
print("学习条件不足")
}

Swift学习第二天--面向对象的更多相关文章

  1. swift学习第二天:swift中的基本数据类型

    一:swift基本数据类型 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型 有符号 Int8 : 有符号8位整型 Int16 : 有符号16位整型 Int ...

  2. java学习第二天面向对象.day08

    this 在方法中表示调用当前方法的对象,this与主方法中对象类名调用是同理的,也是去指向堆中的地址. this可以解决成员变量和形参的问题 使用构造器还是setter方法 构造器:在创建对象的时侯 ...

  3. java学习第二天面向对象.day07

    变量的生命周期 成员变量:存储在堆内存中,随着对象的销毁而销毁 局部变量:存储在栈内存中,随着所定义方法的调用结束而销毁 局部变量存储在方法中,每次调用方法都会在栈空间开辟一块内存空间--栈帧,方法调 ...

  4. swift系统学习第二章

    第五节:可选类型 optional //: Playground - noun: a place where people can play import UIKit /* Swift学习第五节 可选 ...

  5. iOS ---Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  6. [转]swift 学习资源 大集合

    今天看到了一个swift的学习网站,里面收集了很多学习资源 [转自http://blog.csdn.net/sqc3375177/article/details/29206779] Swift 介绍 ...

  7. swift 学习资源 大集合

    今天看到一个swift学习网站,其中我们收集了大量的学习资源 Swift 介绍 Swift 介绍 来自 Apple 官方 Swift 简单介绍 (@peng_gong) 一篇不错的中文简单介绍 [译] ...

  8. Swift学习目录

    本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理.如对原版感兴趣,可以直接单击链接阅读和学习. 第一部分 基础篇 1.基本 ...

  9. 从 prototype.js 深入学习 javascript 的面向对象特性

    从 prototype.js 深入学习 javascript 的面向对象特性 js是一门很强大的语言,灵活,方便. 目前我接触到的语言当中,从语法角度上讲,只有 Ruby 比它更爽. 不过我接触的动态 ...

随机推荐

  1. 十、Hadoop学习笔记————Hive与Hbase以及RDBMS(关系型数据库)的关系

    Hive目的是为了简化MapReduce编程 实际应用中,Hive与Hbase不经常链接

  2. Servlet之会话(Session)以及会话追踪技术(Cookie),(URL重写)和(隐藏表单域)

    Session 什么是会话? 会话: Web应用中的会话 指的是一个客户端浏览器与Web服务器之间连续发生的一系列请求和响应的过程 会话状态: Web服务器和浏览器在会话的过程中产生的状态信息 作用: ...

  3. continue,break以及加上标签的使用(goto思路)

    代码例子在java编程思想70-73页.这里只是想做做总结 java中需要用到标签的唯一理由就是因为由循环嵌套的存在,而且想从多层嵌套循环中break或者continue. 因此,标签只能放在循环前面 ...

  4. 实践作业1:测试管理工具实践 Day4

    由小组吴辉同学和王俊杰同学负责撰写使用手册,详细记录了环境配置完整过程,以及从软件登陆开始,创建一个测试计划,创建新版本,创建测试用例集,分配测试用例到测试计划,关联到测试用例这一系列完整过程. 刘思 ...

  5. zzuli 1817: match number 模拟

    1817: match number Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 199  Solved: 72 SubmitStatusWeb B ...

  6. 第四届河南省ACM SUBSTRING 字符串处理

    SUBSTRING 时间限制: 1 Sec  内存限制: 128 MB 提交: 17  解决: 5 [提交][状态][讨论版] 题目描述 You are given a string input. Y ...

  7. 微信JS-SDK选择相册或拍照并上传PHP实现

    理解:微信上传接口是拍照,或者选择本地照片,上传到微信的服务器,获取到一个id,通过token与这个id获取到图片,保存到服务器即可. 效果 通过微信js接口,调用底层程序. 需要引入js文件,并进行 ...

  8. 多线程 - pthread、NSThread

    1. pthread pthread 简单介绍下,pthread是一套通用的多线程的API,可以Unix / Linux / Windows 等徐彤跨平台使用,使用C语言编写,需要程序员自己管理线程的 ...

  9. 【Flink】流-表概念

    title: Flink流-表概念 date: 2017-12-12 14:48:16 categories: technique tags: Flink Flink Streaming Dynami ...

  10. Hibernate学习(二)关系映射----基于外键的单向一对一

    事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似.只需要将原来的many-to-one元素增加unique="true"属性, ...