「OC」类和对象
一、面向对象
OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类。
术语:OO面向对象、OOP面向对象编程
二、类和对象
(一)关于类
类的设计只关注三个东西:类名、属性和方法
注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识。在对方法进行类的划分中,一般采取的做法是谁最熟悉这个方法那么就把这个方法划分给谁。在OC中,对象对方法的调用称为消息机制,即向既定的对象发送了什么消息。
(二)简单内存分析
类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所有的对象公用类的成员方法,方法在整个内存中只有一份,类本身在内存中占据一份存储空间,类的方法存储于此。
每个对象内部都默认有一个isa指针指向这个对象所使用的类。
[p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存储于类中的方法,执行。
isa是对象中的隐藏指针,指向创建这个对象的类。
(三)类的声明和实现
1)类的声明:
声明一个Car类,它拥有wheels和speed两个属性,一个run方法

2)类的实现:

3)类的调用:
首先在主函数创建了p和p2两个Car类型的对象,把p对象的wheels和speed属性分别设置为5和250,p和p2分别调用run方法,把跑的wheels和speed属性设置为4和300。

输出结果为:

练习:
设计一个Person类

输出结果:

(四)常见错误
1.类的声明和实现不能嵌套
2.方法的实现必须放在@implementation中,不能放在@interface中。
3.方法声明不能放在大括号{}里。
4. 声明新类的时候不能和已有的类嵌套。
5.不允许在@interface大括号里给成员变量赋值(初始化),也不能随便将成员变量当作C语言中的变量来使用,如用static修饰。
6.类的声明必须放在main函数前面。
三、方法与函数
方法与函数的区别:
(1)对象方法的声明必须写在@interface和@end之间,对象方法的实现必须写在@implementation和@end之间
(2)对象方法都以-号开头,类方法都以+号开头
(3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用
(4)函数能写在文件的任意位置(@interface和@end之间除外),函数归文件所有
(5)对象方法归类\对象所有
(6)函数调用不依赖与对象
(7)函数内部不能直接通过成员变量名访问对象的成员变量
四、类和方法的设计
工具类:基本没有任何的成员变量,里面的方法基本都是类方法。
注意:在对象方法中可以调用类方法。
需求:设计一个工具类:一个计算器类,要求(1)返回π,(2)计算两个整数的和,(3)计算某个整数的平方。

输出结果:

「OC」类和对象的更多相关文章
- 「OC」类的深入研究、description方法和sel
一.类的深入研究 (一)类的本质 类本身也是一个对象,是class类型的对象,简称“类对象”. Class类型的定义: Typedef struct obj class *class; 类名就代表着类 ...
- ios开发之OC基础-类和对象
本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...
- 【学习笔记】【oc】类和对象及类的三大基本特征
1.类和对象 类是抽象化,对象是具体化. (1)定义类: 分为两个步骤,类的声明:定义类的成员变量和方法:@interface 用于声明定义类的接口部分,@end表面定义结束:. 成员变量的定义:{} ...
- 「OC」点语法和成员变量的作用域
一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObje ...
- OC基础:类和对象 分类: ios学习 OC 2015-06-12 18:55 17人阅读 评论(0) 收藏
OC:Objective-c 面向对象的c语言,简称obj-c或者OC OC和C的区别 1.OC是C语言的超集,OC是在C语言的基础上结合smalltalk的优点,开发出来的语言.oc兼容所有 ...
- OC 01 类和对象
一. 定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实 ...
- OC学习--类和对象的关系
1. 如何创建对象 面向对象解决问题的时候必须有对象, 那应该如何创建对象? 以建造汽车为例子来解释: >建造汽车需要造车图纸, 图纸上 清楚的描述出 汽车具备的属性和功能(行为) >属性 ...
- 【OC简介-类和对象】
OC与C语言相比,体现的是一种面向对象的思想.OC完全兼容C语言 OC中大多数类前面都有前缀NS,来源于乔布斯NextStep团队,被苹果收购后保留了所有基本语法,合并到Foundation中 OC语 ...
- 黑马程序员——OC语言 类和对象
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)类 1)类的声明 代码编写 ①定义一个Car类,拥有2个属性:轮子数 ...
随机推荐
- nyoj 228 士兵杀敌(五)
题目: http://acm.nyist.net/JudgeOnline/problem.php?pid=228 由于该题一开始是进行士兵军功增加,最后才是查找士兵的军功总和,使用一个数组,进行延迟更 ...
- 在Linux下使用iconv转换字符串编码
在Linux下写C程序,尤其是网络通信程序时经常遇到编码转换的问题,这里要用到iconv函数库. iconv函数库有以下三个函数 123456 #include <iconv.h>icon ...
- Android 三大图片缓存原理、特性对比
这是我在 MDCC 上分享的内容(略微改动),也是源码解析第一期发布时介绍的源码解析后续会慢慢做的事. 从总体设计和原理上对几个图片缓存进行对比,没用到他们的朋友也可以了解他们在某些特性上的实现. 上 ...
- bootstrap 更改container 的width
参考:http://stackoverflow.com/questions/15884102/bootstrap-how-do-i-change-the-width-of-the-container ...
- Android 流媒体系列(二)
import java.io.IOException; import android.app.Activity; import android.content.ContentResolver; imp ...
- VS2010/MFC对话框:一般属性页对话框的创建及显示
一般属性页对话框的创建及显示 本节将介绍一般属性页对话框的创建和显示. 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的.鸡啄米将上一节中的向导对话框进行少量修改,使其成为一般属性页对话 ...
- 导出csv文件代码示例
//当数据量达到一定级别后(大概60000以上),excel会溢出,不能全部显示,而新版的csv好像不会出现这个问题.为什么用好像,我也是听别人说,暂时没有去验证. <?php $sql = & ...
- BAE初试
BAE是百度的应用开发托管平台. 支持python nodejs java php 这几个环境~ 我在BAE上面搭建了1个wordpress. 记录下开启一个app的过程. 下面是所需工具 ---版 ...
- java中如何获取系统时间
需要引入的包有: import java.util.Date; 此为获取当前系统时间,合适为“1991-01-01” String now = ""; SimpleDateF ...
- BZOJ 2424: [HAOI2010]订货(最小费用最大流)
最小费用最大流..乱搞即可 ------------------------------------------------------------------------------ #includ ...