一.面向对象和面向过程的区别


1.以用电脑听歌为例子

1>面向过程:打开电脑-->播放在电脑中得歌曲-->关闭电脑睡觉

2>而面向对象就是找到电脑这个对象,电脑对象有开机,播放歌曲,关闭电脑这3个功能。

2.区别分析:

面向过程关注的解决问题需要哪些步骤,面向对象关注的是解决问题需要哪些对象。两种思想都能达到解决问题的目的,但是解决思路不一样。

3.现实生活中的面向对象的例子

1> 想打电话\发短信去找手机这个对象,不用分析电话要怎样才能拨通

2> 去饭店吃饭找服务员这个对象,不用分析怎么到厨房炒菜

3> 汽车坏了找汽车维修工这个对象,不用分析修车的步骤

4> 境界:万物皆对象(什么东西都可以当做对象,只要你认为他是)

4.常用术语

1> 面向过程 ProcedureOriented

2> 面向对象 ObjectOriented,简称OO

3> 面向对象编程 ObjectOriented Programming,简称OOP

二.类和对象的关系


1.车子是对象,有自己的属性值,是现实存在的,是类的实例存在物体。

2.车子对象的类是什么,这个类是抽象的,是车子创造的整个过程的所有东西,经历这个过程,车子就制造出来。


三.如何设计类

1.类的设计,只关心3样东西:

1>事物名称(类名):这个类叫什么名字

2>属性:这个类包含哪些属性,这些属性值可以来表示对象之间的区别

3>行为(功能):这个类包含哪几样功能,对象可以拥有这个功能

2.一般而言名词基本都可以当做类。因为名词基本都满足上面的3样东西。

3.拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

4.哪个对象最清楚这个行为,就把这个行为写到哪个对象中去。打开电脑(开机)这个行为应该是属于电脑的。人开

机只是人执行电脑这个对象的开机方法而已。

四.定义OC类 


OC类的定义需要二步:类的声明,类的定义

1.类的声明

1> 类名和属性命名规则:标示符规则

2>类名的命名规范:有意义(看到这个类名就想到这个类是干嘛的),多个英文单词组合用驼峰标识,首字母大写,不能有下划线。

//包含头文件
#import  <Foundation/Foundation.h>//类的声明
@interface Person : NSObject // 声明一个叫Person的类{int age; // 这个人拥有年龄属性}- (void)walk; // 这个人拥有走路这个方法@end // 声明的结束标准,必须写

3>成员变量

@interface 的大括号里面放得是成员变量,即这个类拥有的属性,里面的成员变量默认值为0。

4>@public说明这个类里面的成名变量可以被外界访问

5>NSObject的目的是让Person这个类有创造对象的能力。

2.类的实现

//类的实现
@implementation Person//走路这个方法的具体实现
- (void) walk
{NSLog(@"人走起来了");
}
@end // 实现的结束标志

3.常见错误

1> 只有类的声明,没有类的实现

2> 漏了@end

3>@interface和@implementation嵌套

4> 两个类的声明嵌套

5>成员变量没有写在括号里面

6>方法的声明写在了大括号里面,方法的声明要写在大括号外

4.语法细节

1>成员变量不能在{}中进行初始化、不能被直接拿出去访问(只能通过指针访问p->age)。

2>方法不能当做函数一样调用(必须用类或者对象调用)。

3> 成员变量\方法不能用static等关键字修饰,别跟C语言混在一起。

4> 类的实现可用写在main函数的后面,主要在声明后面就可以(和函数的声明类似)。

五.创建对象


Person *p = [Person new];

Person *p:定义一个这个类(Person)类型的指针变量

[Person new]:使用类方法new创造一个类对象,让赋值给Person类型的指针变量 。

注意:

1.[Person new]每次都会创建一个新对象,这个类方法的返回对象的地址,所以用一个类类型的指针变量存放对象的地址。

2.直接访问成员变量用->,例如:p->age = 25;

3.面向对象封装的好处

1>更加接近人类的思考方式

2>只需要关注对象,不需要关注步骤

六.OC方法的注意


1.方法(行为)包括:方法名、参数、返回值(声明、实现)

2.OC对象的方法,必须以减号 -开头

3.OC方法中任何数据类型都必须用小括号()扩住

4.OC中,想执行一些行为,就写上一个中括号[行为执行者行为名称]。

5.带参数的方法中,冒号也是方法名的一部分。

6.同一个类中不允许两个对象方法同名

7.对象方法必须由对象来调用

七.OC方法和函数的区别


1.OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。函数的声明和实现可以写在任何位置(除了@interface和@end之间)。

2.C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有。方法则属于类或者对象。

3.函数内部不能直接通过成员变量名访问某个对象的成员变量

4.对象方法是以-开头的,

八.其它


1.在使用类创建对象之前,会将类加载进内存,为其分配存储空间,类里面存放这方法列表(类方法和对象方法)

2.方法中可以直接用变量名访问成员变量,哪个对象调用这个方法,就访问这个对象里的成员变量

3.创建完对象,会给对象分配一个存储空间,对象里面有属于自己的成员变量,但是方法是存在在类里面,对象通过isa指针去类里面找这个方法,然后调用方法。

4.OC对象不能自动回收,函数调用完毕后,其它局部变量,会被自己回收,但是对象不会自动回收。

5.类里面的成员变量,必须创建好对象才能使用。成员变量是为对象而存在的。

6.类可以只有方法,这个类就叫做工具类。

7.匿名对象:[Person new]创建新对象后,不赋值给指针变量,每次[Person new]都会创建一个新对象。开发中不要使用匿名对象,这样会导致内存泄露。

8.OC方法中一个参数对应一个冒号,这个冒号也是方法名的一部分

面向对象语法1—基础相关推荐

  1. 了解使用JavaScript进行面向对象编程的基础(并增强您的编码…

    by Kris Baillargeon 通过克里斯·拜伦 学习使用JavaScript进行面向对象编程的基础知识(并增强您的编码能力!) (Learn the basics of object-ori ...

  2. 设计模式:可复用面向对象软件的基础

    文章目录 设计模式 设计模式有4个基本要素 23个设计模式 设计模式分类 目的准则 范围准则 导致重新设计的一般原因,以及解决这些问题的设计模式举例 设计模式所支持的设计的可变方面 设计模式背后的6大 ...

  3. 好书整理系列之-设计模式:可复用面向对象软件的基础 4

    第4章结构型模式 结构型模式涉及到如何组合类和对象以获得更大的结构.结构型类模式采用继承机制来 组合接口或实现.一个简单的例子是采用多重继承方法将两个以上的类组合成一个类,结果 这个类包含了所有父类的 ...

  4. java零基础Ⅰ-- 6.面向对象编程(基础部分)

    java零基础Ⅰ-- 面向对象编程(基础部分) 类与对象 类与对象引出 类与对象概述 快速入门 类与对象的区别和联系 对象在内存中存在形式 属性/成员变量/字段 注意事项和细节说明 如何创建对象 如何 ...

  5. 《设计模式:可复用面向对象软件的基础》——行为模式(3)(笔记)

    文章目录 五.行为模式 5.9 STRATEGY(策略) 1.意图 2.别名 3.动机 4.适用性 5.结构 6.参与者 7.协作 8.效果 9.实现. 10.代码示例 11.相关模式 5.10 TE ...

  6. 《设计模式:可复用面向对象软件的基础》——行为模式(笔记)

    文章目录 五.行为模式 5.1 CHAIN OF RESPONSIBILITY(职责链) 1.意图 2.动机 3.适用性 4.结构 5.参与者 6.协作 7.效果 8.实现 9.代码示例 10.相关模 ...

  7. java学习笔记-第七章:面向对象编程(基础部分)

    第七章:面向对象编程(基础部分) 总体内容 类与对象 引出类与对象 类与对象概述 类与对象的关系示意图 属性概念及其细节 类与对象快速入门案例 对象内存布局 类与对象内存分配机制 引申:java内存的 ...

  8. 面向对象和C++基础—面向对象(基础篇)

    文章目录 7.面向对象-基础篇 (1). 飞船和子弹的生成和保存 (2). 飞船和子弹的碰撞检测 (3). 类与对象的基本特征 #1.属性与方法 #2.面向对象的三大基本特征 #3.封装 #4.继承 ...

  9. Linux高级文本处理之gawk语法和基础命令(一)

    一.引言 Awk 是一个维护和处理文本数据文件的强大语言.在文本数据有一定的格式,即每行数据包 含多个以分界符分隔的字段时,显得尤其有用. 即便是输入文件没有一定的格式,你仍然可 以使用 awk 进行 ...

最新文章

  1. lpq命令--Linux命令应用大词典729个命令解读
  2. PHP实现将任意尺寸的图片裁剪后等比缩放到任意尺寸的透明图片上,并实现图片翻转...
  3. token 过期刷新令牌_OkHttp实现全局过期token自动刷新
  4. python scikit_如何将Scikit学习Python库用于数据科学项目
  5. oc - NSArray基础用法总结
  6. python threading.Timer
  7. 华为机试HJ98:自动售货系统
  8. python中execute函数_在excel中调用python函数
  9. Docker安装与简介
  10. python-next
  11. Docker基础教程
  12. 可视化编辑json数据——json editor
  13. 边际成本,机会成本,沉默成本
  14. Solid Edge如何制作爆炸图
  15. 速营社怎么赚钱,可以当副业吗
  16. c语言led左右循环程序,c语言编写程序,将led从左往右,再从右往左依次往返点亮...
  17. sql基本的日期函数
  18. 03-Tensorboard的使用 (老衲又卷土重来了!!!)
  19. MySQL——索引及调优篇
  20. excel拆分合并技巧:将工作表合并成总表的方法

热门文章

  1. VGGNet结构分析
  2. [PMZL]第1卷-误入天庭-02
  3. 追踪高频交易——华尔街猎狼者(上)
  4. android自定义侧滑菜单slidmenu
  5. 国外博士后申请心得,博后位置,CV,电话面试面经,签证等
  6. Koch(科赫)雪花绘制
  7. Android 切换系统语言功能实现(下)
  8. OSChina 周五乱弹 ——什么情况下两个人之间的距离能成为负数
  9. Linux下文件的读写
  10. 贪吃的猴子c语言的思路,贪吃的猴子(贪吃的猴子?C语言)