Swift学习第二天--面向对象
//: 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学习第二天--面向对象的更多相关文章
- swift学习第二天:swift中的基本数据类型
		一:swift基本数据类型 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型 有符号 Int8 : 有符号8位整型 Int16 : 有符号16位整型 Int ... 
- java学习第二天面向对象.day08
		this 在方法中表示调用当前方法的对象,this与主方法中对象类名调用是同理的,也是去指向堆中的地址. this可以解决成员变量和形参的问题 使用构造器还是setter方法 构造器:在创建对象的时侯 ... 
- java学习第二天面向对象.day07
		变量的生命周期 成员变量:存储在堆内存中,随着对象的销毁而销毁 局部变量:存储在栈内存中,随着所定义方法的调用结束而销毁 局部变量存储在方法中,每次调用方法都会在栈空间开辟一块内存空间--栈帧,方法调 ... 
- swift系统学习第二章
		第五节:可选类型 optional //: Playground - noun: a place where people can play import UIKit /* Swift学习第五节 可选 ... 
- iOS ---Swift学习与复习
		swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ... 
- [转]swift 学习资源 大集合
		今天看到了一个swift的学习网站,里面收集了很多学习资源 [转自http://blog.csdn.net/sqc3375177/article/details/29206779] Swift 介绍 ... 
- swift 学习资源 大集合
		今天看到一个swift学习网站,其中我们收集了大量的学习资源 Swift 介绍 Swift 介绍 来自 Apple 官方 Swift 简单介绍 (@peng_gong) 一篇不错的中文简单介绍 [译] ... 
- Swift学习目录
		本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理.如对原版感兴趣,可以直接单击链接阅读和学习. 第一部分 基础篇 1.基本 ... 
- 从 prototype.js 深入学习 javascript 的面向对象特性
		从 prototype.js 深入学习 javascript 的面向对象特性 js是一门很强大的语言,灵活,方便. 目前我接触到的语言当中,从语法角度上讲,只有 Ruby 比它更爽. 不过我接触的动态 ... 
随机推荐
- 十、Hadoop学习笔记————Hive与Hbase以及RDBMS(关系型数据库)的关系
			Hive目的是为了简化MapReduce编程 实际应用中,Hive与Hbase不经常链接 
- Servlet之会话(Session)以及会话追踪技术(Cookie),(URL重写)和(隐藏表单域)
			Session 什么是会话? 会话: Web应用中的会话 指的是一个客户端浏览器与Web服务器之间连续发生的一系列请求和响应的过程 会话状态: Web服务器和浏览器在会话的过程中产生的状态信息 作用: ... 
- continue,break以及加上标签的使用(goto思路)
			代码例子在java编程思想70-73页.这里只是想做做总结 java中需要用到标签的唯一理由就是因为由循环嵌套的存在,而且想从多层嵌套循环中break或者continue. 因此,标签只能放在循环前面 ... 
- 实践作业1:测试管理工具实践 Day4
			由小组吴辉同学和王俊杰同学负责撰写使用手册,详细记录了环境配置完整过程,以及从软件登陆开始,创建一个测试计划,创建新版本,创建测试用例集,分配测试用例到测试计划,关联到测试用例这一系列完整过程. 刘思 ... 
- zzuli 1817: match number 模拟
			1817: match number Time Limit: 1 Sec Memory Limit: 128 MB Submit: 199 Solved: 72 SubmitStatusWeb B ... 
- 第四届河南省ACM SUBSTRING 字符串处理
			SUBSTRING 时间限制: 1 Sec 内存限制: 128 MB 提交: 17 解决: 5 [提交][状态][讨论版] 题目描述 You are given a string input. Y ... 
- 微信JS-SDK选择相册或拍照并上传PHP实现
			理解:微信上传接口是拍照,或者选择本地照片,上传到微信的服务器,获取到一个id,通过token与这个id获取到图片,保存到服务器即可. 效果 通过微信js接口,调用底层程序. 需要引入js文件,并进行 ... 
- 多线程 - pthread、NSThread
			1. pthread pthread 简单介绍下,pthread是一套通用的多线程的API,可以Unix / Linux / Windows 等徐彤跨平台使用,使用C语言编写,需要程序员自己管理线程的 ... 
- 【Flink】流-表概念
			title: Flink流-表概念 date: 2017-12-12 14:48:16 categories: technique tags: Flink Flink Streaming Dynami ... 
- Hibernate学习(二)关系映射----基于外键的单向一对一
			事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似.只需要将原来的many-to-one元素增加unique="true"属性, ... 
