OC语言2-基础知识

转载 2016年05月31日 10:46:14

一、面向对象

OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,

面向过程关注的是解决问题涉及的步骤

面向对象关注的是设计能够实现解决问题所需功能的类

术语:OO面向对象、OOP面向对象编程

二、类

1.关于类

类的设计只关注三个东西:类名、属性和方法

注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,

类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识

在对方法进行类的划分中,一般采取的做法是谁最熟悉这个方法那么就把这个方法划分给谁

在OC中,对象对方法的调用称为消息机制,即向既定的对象发送了什么消息

2. 简单内存分析

类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所有的对象公用类的成员方法,方法在整个内存中只有一份,类本身在内存中占据一份存储空间,类的方法存储于此

每个对象内部都默认有一个isa指针指向这个对象所使用的类。

[p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存储于类中的方法,执行。

isa是对象中的隐藏指针,指向创建这个对象的类

3. 类的声明和实现

1)类的声明:

这里声明了一个Person类,这个类拥有一个@public修饰的属性(成员变量),以及一个对象方法put。

image

2)类的实现:

类的声明可以理解为类中的方法的实现

image

3)类的调用:

在主函数首先创建了一个Person类型的对象(先调用alloc分配存储空间,后调用init方法初始化为0),并定义了一个Person类型的指针指向创建的这个对象,之后初始化对象成员变量_age的值为20,然后调用了对象的put方法,打印输出。

image

4)练习,创建一个Person类。

类的声明:

image

类的实现如下:

image

类的调用如下:

image

4. 常见错误

  1. @interface @end和@implementation @end不能嵌套包含

  2. 只有类的声明没有类的实现

  3. 漏写@end

  4. 两个类的声明嵌套(可以把顺序打乱)

  5. 成员变量没有写在{}里

  6. 方法的声明写在了{}里面

  7. 在声明时对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在

  8. 方法无法像函数那样的调用

  9. 成员变量和方法不能用static等关键字修饰,不要和c语言混淆

  10. 类的实现可以写在mian函数后面,在使用之前只要有声明就可以

三、OC对象与函数

OC对象与函数有着本质的区别:

  1. 方法的实现只能写在@implementation··@end中,对象方法的声明只能写在@interface···@end中间

  2. 对象方法都以-号开头,类方法都以+号开头

  3. 对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用

  4. 函数属于整个文件,可以写在文件中的任何位置,包括@implementation··@end中,但写在@interface···@end会无法识别,函数的声明可以再main函数内部也可以在main函数外部。

  5. 对象方法归类\对象所有

  6. 函数调用不依赖与对象

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

四、类和方法的设计

工具类:基本没有任何的成员变量,里面的方法基本都是类方法。

注意:在对象方法中可以调用类方法。

需求:设计一个工具类:
一个计算器类,要求
(1)返回π,
(2)计算两个整数的和,
(3)计算某个整数的平方。

类的声明部分
image

类的实现部分

image

测试程序:

OC基础知识汇总

OC部分 第一部分   基本概念  OC概述 OC是一种能够完成复杂面向对象编程的简单的计算机设计语言。 通过提供用于定义类和方法的语法,它扩展了标准的c语言。它还提供了类和接...
  • u014165686
  • u014165686
  • 2014年08月11日 20:06
  • 1296

排序算法(五)2-路插入排序

1、 2、 3、 4、 5、 6、 7、 8、
  • wwkaven
  • wwkaven
  • 2014年11月25日 08:07
  • 718

OC语言基础知识

OC语言基础知识 一、面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决...
  • u010927311
  • u010927311
  • 2014年09月28日 23:22
  • 355

黑马程序员——OC语言基础知识

OC语言基础知识 一、面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需...
  • u011004811
  • u011004811
  • 2015年02月15日 11:22
  • 165

C语言基础知识梳理总结

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!...
  • g984160547
  • g984160547
  • 2017年03月06日 09:54
  • 4149

C语言基础知识(个人简单总结的关于变量和函数方面)

从大一开始学过C语言,到现在已经四年半了。当然肯定是不同的时期做不同的事情有不同的理解。现在做一些基础知识的小结吧。   C程序由各种源文件,头文件,库函数组成; 源文件,函数库,头文件由函数和...
  • z19881126
  • z19881126
  • 2011年08月12日 15:34
  • 5355

OC基础教程2-面向对象编程的基础知识

面向对象编程(Object Oriented Programming,OOP)是软件开发方法,更愿意说它是一种编程思想。 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术 发展到一定阶...
  • y624418775
  • y624418775
  • 2015年09月17日 17:37
  • 490

OC语言——基本语法和思想

今天学习了OC语言基础语法
  • linfenpipi
  • linfenpipi
  • 2015年02月18日 22:16
  • 3274

C/C++语言基础知识总结

C或者C++内置的整数数据类型的长度是很含糊的。这种含糊性会导致难以预料的意外和后果,尤其是在不同CPU和不同编译器之间移植嵌入式代码的时候。下面是内置的整数类型的基本规则:* char是8位的或者更...
  • ForeverSeaStar
  • ForeverSeaStar
  • 2006年02月26日 11:21
  • 1536

自定义安卓控件错误 Custom view MySwitchBtn is not using the 2- or 3-argument View constructors; XML attribute

安卓自定义一个Button时报错:Custom view MySwitchBtn is not using the 2- or 3-argument View constructors; XML at...
  • xiaonadiandian
  • xiaonadiandian
  • 2015年06月05日 17:24
  • 1338
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC语言2-基础知识
举报原因:
原因补充:

(最多只允许输入30个字)