面向对象语法1—基础
一.面向对象和面向过程的区别
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—基础相关推荐
- 了解使用JavaScript进行面向对象编程的基础(并增强您的编码…
by Kris Baillargeon 通过克里斯·拜伦 学习使用JavaScript进行面向对象编程的基础知识(并增强您的编码能力!) (Learn the basics of object-ori ...
- 设计模式:可复用面向对象软件的基础
文章目录 设计模式 设计模式有4个基本要素 23个设计模式 设计模式分类 目的准则 范围准则 导致重新设计的一般原因,以及解决这些问题的设计模式举例 设计模式所支持的设计的可变方面 设计模式背后的6大 ...
- 好书整理系列之-设计模式:可复用面向对象软件的基础 4
第4章结构型模式 结构型模式涉及到如何组合类和对象以获得更大的结构.结构型类模式采用继承机制来 组合接口或实现.一个简单的例子是采用多重继承方法将两个以上的类组合成一个类,结果 这个类包含了所有父类的 ...
- java零基础Ⅰ-- 6.面向对象编程(基础部分)
java零基础Ⅰ-- 面向对象编程(基础部分) 类与对象 类与对象引出 类与对象概述 快速入门 类与对象的区别和联系 对象在内存中存在形式 属性/成员变量/字段 注意事项和细节说明 如何创建对象 如何 ...
- 《设计模式:可复用面向对象软件的基础》——行为模式(3)(笔记)
文章目录 五.行为模式 5.9 STRATEGY(策略) 1.意图 2.别名 3.动机 4.适用性 5.结构 6.参与者 7.协作 8.效果 9.实现. 10.代码示例 11.相关模式 5.10 TE ...
- 《设计模式:可复用面向对象软件的基础》——行为模式(笔记)
文章目录 五.行为模式 5.1 CHAIN OF RESPONSIBILITY(职责链) 1.意图 2.动机 3.适用性 4.结构 5.参与者 6.协作 7.效果 8.实现 9.代码示例 10.相关模 ...
- java学习笔记-第七章:面向对象编程(基础部分)
第七章:面向对象编程(基础部分) 总体内容 类与对象 引出类与对象 类与对象概述 类与对象的关系示意图 属性概念及其细节 类与对象快速入门案例 对象内存布局 类与对象内存分配机制 引申:java内存的 ...
- 面向对象和C++基础—面向对象(基础篇)
文章目录 7.面向对象-基础篇 (1). 飞船和子弹的生成和保存 (2). 飞船和子弹的碰撞检测 (3). 类与对象的基本特征 #1.属性与方法 #2.面向对象的三大基本特征 #3.封装 #4.继承 ...
- Linux高级文本处理之gawk语法和基础命令(一)
一.引言 Awk 是一个维护和处理文本数据文件的强大语言.在文本数据有一定的格式,即每行数据包 含多个以分界符分隔的字段时,显得尤其有用. 即便是输入文件没有一定的格式,你仍然可 以使用 awk 进行 ...
最新文章
- lpq命令--Linux命令应用大词典729个命令解读
- PHP实现将任意尺寸的图片裁剪后等比缩放到任意尺寸的透明图片上,并实现图片翻转...
- token 过期刷新令牌_OkHttp实现全局过期token自动刷新
- python scikit_如何将Scikit学习Python库用于数据科学项目
- oc - NSArray基础用法总结
- python threading.Timer
- 华为机试HJ98:自动售货系统
- python中execute函数_在excel中调用python函数
- Docker安装与简介
- python-next
- Docker基础教程
- 可视化编辑json数据——json editor
- 边际成本,机会成本,沉默成本
- Solid Edge如何制作爆炸图
- 速营社怎么赚钱,可以当副业吗
- c语言led左右循环程序,c语言编写程序,将led从左往右,再从右往左依次往返点亮...
- sql基本的日期函数
- 03-Tensorboard的使用 (老衲又卷土重来了!!!)
- MySQL——索引及调优篇
- excel拆分合并技巧:将工作表合并成总表的方法