一、面向对象

  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」类和对象的更多相关文章

  1. 「OC」类的深入研究、description方法和sel

    一.类的深入研究 (一)类的本质 类本身也是一个对象,是class类型的对象,简称“类对象”. Class类型的定义: Typedef struct obj class *class; 类名就代表着类 ...

  2. ios开发之OC基础-类和对象

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  3. 【学习笔记】【oc】类和对象及类的三大基本特征

    1.类和对象 类是抽象化,对象是具体化. (1)定义类: 分为两个步骤,类的声明:定义类的成员变量和方法:@interface 用于声明定义类的接口部分,@end表面定义结束:. 成员变量的定义:{} ...

  4. 「OC」点语法和成员变量的作用域

    一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObje ...

  5. 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兼容所有 ...

  6. OC 01 类和对象

    一.  定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实 ...

  7. OC学习--类和对象的关系

    1. 如何创建对象 面向对象解决问题的时候必须有对象, 那应该如何创建对象? 以建造汽车为例子来解释: >建造汽车需要造车图纸, 图纸上 清楚的描述出 汽车具备的属性和功能(行为) >属性 ...

  8. 【OC简介-类和对象】

    OC与C语言相比,体现的是一种面向对象的思想.OC完全兼容C语言 OC中大多数类前面都有前缀NS,来源于乔布斯NextStep团队,被苹果收购后保留了所有基本语法,合并到Foundation中 OC语 ...

  9. 黑马程序员——OC语言 类和对象

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)类 1)类的声明 代码编写 ①定义一个Car类,拥有2个属性:轮子数 ...

随机推荐

  1. 百度统计和CNZZ到底有哪些不同?

    作为互联网门外汉,同时作为不专业的站长,我总是有很多问题想知道,比如百度统计和CNZZ在数据统计上总是有差异,就好像王婆卖瓜,自卖自夸,又好像公说公有理,婆说婆有理. 作为专业的不专业的市场人员,好奇 ...

  2. shell编程之文本与日志过滤

    1:grep命令: grep -v  "char"  file_name 匹配不包括"char"的文本 grep -n -w "char" ...

  3. 用DBMS_ADVISOR.SQLACCESS_ADVISOR创建SQL Access Advisor访问优化建议

    使用OEM方式来创建SQL Access Advisor访问优化建议,已经是四五年的事了,下面就来写写怎样使用DBMS_ADVISOR.SQLACCESS_ADVISOR来创建SQL Access A ...

  4. 联想S720/S720i通刷刷机包 Vibe V1.0

    ROM介绍 基于官方最新S116底包制作,保证足够的稳定性. 增加VIBE元素,看起来更加大气.美观. 首次增加VIBE元素,720i执行起来无压力,720可能会有点卡.自行酌情刷入. 有bug请文明 ...

  5. curl向web服务器发送json数据

    c++使用libcurl: /* *g++ demo.cpp -g -Wall -lcurl */ #include <string.h> #include <stdlib.h> ...

  6. SSIS DB目录设置 (Integration Services Catalogs)

    1.创建SSISDB目录 这里没什么好说的,点击Enable CLR Integration ,然后设置一个加密密码 2. SSIS Catalog设置 Retention Period (days) ...

  7. jira使用

    JIRA的生产者把JIRA定义为Professional Issue Tracker,即它是一个专业的问题跟踪管理的软件.这里的"问题"对应的英文单词是Issue,所以含义比较广, ...

  8. 线段树讲解(数据结构、C++)

    声明    : 仅一张图片转载于http://www.cnblogs.com/shuaiwhu/archive/2012/04/22/2464583.html,自己画太麻烦了...那个博客的讲解也很好 ...

  9. Add Two Numbers - C++链表操作

    题目意思很简单,两个链表分别表示两个数,将两个数相加的结果存入一个新的链表中. 思路同样很简单:两个链表如果一样长,对应位置相加,如果某一个链表多了,则根据加的结果有无进位继续处理,全部结束后要考虑会 ...

  10. JS声明语句提升与作用域

    <!DOCTYPE html><html><head></head><body><script>//-------------- ...