美文网首页门外汉自学Swift
20170610基础知识-面向对象

20170610基础知识-面向对象

作者: 花间提壶蛋大厨 | 来源:发表于2017-06-13 09:22 被阅读0次

Object Oriented ProgrammingOOP:面向对象,使用对象、类、继承、封装、属性、方法、扩展、协议等

1、基本特性:封装、继承、多态

封装:尽可能隐蔽对象内容细节,对外行程一个边界,只保留有限的对外接口

继承:特殊类具有一般类的全部属性和方法,一般类(父类、基类),特殊类(子类、派生类)

多态:父类中定义的属性、方法,在被子类继承后,可以使同一个属性、方法,在父类、子类中,具有不同的含义

2、类、结构体、枚举,都是面向对象的数据类型

3、枚举

enum 枚举名 { 枚举的定义(一组成员的值和一组相关值) }

Swift中,枚举的成员值默认不是整数类型,成员值前面要加上case

使用枚举成员赋值时,枚举类型名.成员值

在switch中使用枚举,case必须全面包含枚举中的所有成员

枚举原始值

enum 枚举名:数据类型(字符、字符串、整数、浮点数)

{  case 成员名 = 默认值  }

将枚举的成员值转换为原始值:枚举名.成员名.rawValue

将枚举的原始值转换为成员值:枚举名(rawValue: 原始值)

枚举相关值

enum Figure {

case Rectangle(Int, Int)

case Circle(Int)

}

对于Figure,Rectangle和Circle是相关值,都是元组类型,对于一个特定的Figure实例,只能有一个相关值

为了从相关值中提取数据,可以在元组字段前面加let或var,如果元组中字段类型一致并且需要全部提取,可以将let或var移到相关值前面

.Rectangle(let width, let height)     let .Rectangle(width, height)

4、结构体、类

Swift中的结构体,不近可以定义成员变量,还可以定义方法,是一种轻量级的类,结构体不具有继承性,不能强制类型转换、使用析构函数、使用引用计等

class 类名 { 定义类的成员 }

struct 结构体名 { 定义结构体的成员 }

classEmployee {

varno:Int=0

varname:String=""

varjob:String?

varsalary:Double=0

vardept :Department?  将结构体和类关联起来

}

structDepartment {

varno:Int=0

varname:String=""

}

实例化: let emp = Employee()  var dept = Department(),实例化后,会开辟内存空间

类一般声明为let,类是引用数据类型,let说明不能修改引用,但引用指向的对象可以修改

5、引用类型的比较 ===  !===,比较两个引用是否为同一个实例,结构体和枚举都是值类型,但不能用==  !=,必须重载===  !==运算符,定义相等规则

6、运算符重载

定义一个重载运算符的函数,在需要执行被重载的运算符时调用该函数

func==(lhs:Department, rhs:Department) ->Bool{

returnlhs.name==rhs.name&&lhs.no==rhs.no

}

func!=(lhs:Department, rhs:Department) ->Bool{

if(lhs.name !=rhs.name||lhs.no!=rhs.no) {

returntrue

}

returnfalse

}

7、类型嵌套,类、结构体、枚举可以进行嵌套,在某一个类型的{}内部定义类

8、可选链:显示拆包(?-!)替换为(?-?),就是可选链,遇到nil不会抛出错误,会把nil返回给引用者

9、访问限定

访问范围主要有两个:模块、源文件

模块:指一个应用程序或者一个框架,用import关键字引入

源文件:.swift文件,编译之后被包含在应用程序包或框架中,一个源文件包含一个面向对象类型(类、结构体、枚举),这些类型中又包含函数、属性等

访问级别:open、public、internal、fileprivate、private

open:无论在自己模块内部,还是在其他模块(import语句引入其他模块)都可以被访问

public:在同一个模块中,与open完全一样,在不同模块时,public所声明的类不能被继承,public所声明的属性和方法不能被重写

internal:默认访问限定,只能在自己模块中被访问

fileprivate:只能在当前源文件中被访问

private:只能在类型内部被访问

10、访问级别使用原则

①如果一个类型定义为internal、private,那么类型声明的变量或常量不能使用public

②函数的访问级别,不能高于它的参数和返回类型的访问级别

③元素类型访问级别,遵循字段最低级的访问级别

④枚举中成员的访问级别继承于该枚举

11、类和结构体的异同

相同:定义存储属性、定义方法、定义下标、定义构造函数、定义扩展、实现协议

不同:只有类才能继承、核对运行时对象的类型、析构对象释放资源、引用计数允许一个实例有多个引用

结构体是值类型,每一个实例没有独一无二的标识

类是引用类型,每一个实例都有独一无二的标识

相关文章

  • 20170610基础知识-面向对象

    Object Oriented ProgrammingOOP:面向对象,使用对象、类、继承、封装、属性、方法、扩展...

  • JavaScript之 new 命令

    JavaScript 面向对象编程的基础知识篇 1 。 1. 概述 面向对象编程(Object Oriented ...

  • js面向对象

    本文将循序渐进的介绍js面向对象的基础知识。 什么是面向对象呢? 面向对象编程 (OOP : Object Ori...

  • Java面试题基础知识篇

    1Java 基础知识面向对象→ 什么是面向对象面向对象、面向过程 略面向对象的三大基本特征和五大基本原则答java...

  • 软件设计

    知识点分数说明比例面向对象12面向对象基本概念、面向对象分析与设计、UML、设计模式16.00%软件工程基础知识1...

  • 第6章 面向对象基础概念

    1. 面向对象的基础知识 1.1 什么是面向对象 面向对象是一种软件开发方法,主要的开发方法 结构化 可视化 软件...

  • Java-Review-Note——1.Java基础知识

    Java-Review-Note——1.Java基础知识 标签: JavaStudy 1.面向过程与面向对象的对比...

  • 【Java基础】Java面试基础知识Q&A(上)

    Java面试基础知识Q&A(上) 面向对象编程( OOP) Java 是一个支持并发、基于类和面向对象的计算机编程...

  • 2022-03-28 Java基础知识(22)- Java 面向

    本文上接 "Java基础知识(11)- Java 面向对象(三)[https://www.cnblogs.com/...

  • 面向对象基础知识

    面向对象 第一章:简介 ​ 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一...

网友评论

    本文标题:20170610基础知识-面向对象

    本文链接:https://www.haomeiwen.com/subject/wqxdqxtx.html