面向对象

面向对象(Object-Oriented)是基于面向过程(procedure-oriented)而言的

面向对象 强调对象<指挥者> OC, Java语言就是面向对象

面向过程 强调过程<执行者> C语言就是面向过程

面向对象是一种编程思想 运用对象 类 封装 继承 多态和消息等概念来构造 测试 重构软件

面向对象的特点 A:封装 B:继承 C:多态

面向对象思想的特点 A:它是一种更符合人们思想习惯的思想 B:它使复杂的内容简单化 C:它使我们从执行者变成指挥者

面向对象的优点 符合人们通常的思维方式 从分析到设计再到编码采用一致的模型表示 具有高度连续性 软件重用性好

类和对象

类 对现实世界中事物的描述(成员变量和方法)

对象 现实世界中实际存在具体的个体

示例代码一

#import <Foundation/Foundation.h>

/** 类的声明 **/
@interface Car : NSObject {//大括号内声明成员变量 默认初始化为0(与函数的大括号是不一样的); NSObject: 根类 让Car具备创建对象的能力
@public//此关键字可以让成员变量被外界访问
int _age;//成员变量1
int _height;//成员变量2
}
- (void) run;//对象方法
@end /** 类的实现 **/
@implementation Car
- (void) run {
NSLog(@"小车%i岁,%icm,它在跑",_age,_height);
}
@end /** 主函数 **/
int main() {
Car *c = [Car new];//创建对象
c->_age = ;//设置对象的属性
c->_height = ;//设置对象的属性 [c run];//调用对象方法
return ;
} /** 内存分析 **/
//[Car new] 每次都会创建出新的对象 并且返回对象的地址值 那么就应该用一个指针变量保存对象的地址

示例代码二

#import <Foundation/Foundation.h

@interface Person : NSObject {
@public
int _age;
int _height;
}
- (int) test : (int) i;//带参数方法的声明
//- (int) test : (int) i test1 : (int) i1;//多参数方法的声明
@end @implementation Person
- (int) test : (int) i {//带参数方法的实现
return i * i;
}
//- (int) test : (int) i test1 : (int) i1 {//多参数方法的实现
// return i * i1;
//}
@end int main() {
Person *p = [Person new];
int tmp = [p test : ];//带参数方法的调用
//int i = [p test : 10 test1 : 9];//多参数方法的调用 NSLog(@"test方法的值是:%i", tmp);
return ;
} /** 注意 **/
//没有@interface 只有@implementation 也可以开发一个类
//同一个类中不允许两个对象方法同名 (:也是方法名的一部分) /** 方法语法详解 **/
//- (int) test : (int) i;
//方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名; //[p test : 7]
//[指针变量名 方法名 : 实际参数] //- (int) test : (int) i test1 : (int) i1;
//方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名 方法名 : (参数类型) 参数名; //[p test : 10 test1 : 9]
//[指针变量名 方法名 : 实际参数 方法名 : 实际参数]

Objective-C 类和对象的更多相关文章

  1. Objective-C(二、类和对象)

     类和对象 #import是include的升级版,可以自动防止重复包含,所以注意:大家以后在引入头文件的时候都使用import Foundation是一个框架,Foundation.h是Founda ...

  2. iOS RunTime运行时(1):类与对象

    Objective-C语言是一门动态语言,他将很多静态语言在编译和链接期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码更具有灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一下 ...

  3. Objective -C Object initialization 对象初始化

    Objective -C Object initialization 对象初始化 1.1 Allocating Objects  分配对象 Allocation is the process by w ...

  4. Java编程里的类和对象

    像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...

  5. Python - 类与对象的方法

    类与对象的方法

  6. C++基础知识(5)---类和对象

    终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...

  7. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  8. 前端学PHP之面向对象系列第一篇——类和对象

    × 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...

  9. Objective-C Runtime 运行时之一:类与对象

    Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...

  10. [Java入门笔记] 面向对象编程基础(一):类和对象

    什么是面向对象编程? 我们先来看看几个概念: 面向过程程序设计 面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实 ...

随机推荐

  1. linux下构建SVN

    1. 安装subversion#yum -y install subversion2. 安装好了之后 新建一个svn目录#mkdir /home/svn3. 新建两个版本仓库#svnadmin cre ...

  2. 动态截屏软件jpg格式

    软件下载地址:https://github.com/weibanggang/jiedu 开始截屏 保存路径 生成图片 预览

  3. PAT——1009. 说反话

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区 ...

  4. HDU 1275 两车追及或相遇问题(相遇和追及公式)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1275 两车追及或相遇问题 Time Limit: 2000/1000 MS (Java/Others) ...

  5. @RestController失效

    @RestController 注解失效.就是本来应该是直接返回数据.而不是去查找视图.但是去查找视图了.我这人不喜欢弄一些无用的配置文件.所以用到什么.引用什么.但是也容易犯错误.不过也好.对哪里出 ...

  6. 使用py2exe将python程序打包成exe程序

    近日帮朋友写了个python小程序,从互联网上抓取一些需要的文章到本地.为了运行方便,希望能转换成exe程序在windows下定期执行.从百度上找了些文章,发现py2exe的应用比较多,遂使用之. 1 ...

  7. django, CentOS7+nginx(apache)+mod_wsgi+Python+Django

    Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS ...

  8. oracle database 9i/10g/11g 编程艺术 源代码下载

    背景 在找这本书的源码,搜到提供的都是需要C币下载的.比较固执(其实是穷). 在这本书的前言中提到源代码可以在 www.appress.com 上下载. 下面是该书在该网站上的链接: https:// ...

  9. 搭建Extjs框架(一)

    搭建Extjs框架 pc端 github https://github.com/Status400/Extjs-6.2.0-demo   欢迎start 准本工作:       官方下载Extjs  ...

  10. kali linux 安装TIM or QQ(CrossOver 安装 QQ)

    需要文件 http://www.crossoverchina.com/xiazai.html dpkg --add-architecture i386 apt-get update apt-get i ...