面向对象

面向对象(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]
//[指针变量名 方法名 : 实际参数 方法名 : 实际参数]

最新文章

  1. 【开源】C#跨平台物联网通讯框架ServerSuperIO(SSIO)
  2. css之盒模型
  3. JQuery常用方法(均实践过)
  4. 【原】javascript执行环境及作用域
  5. symfony中twig的流程控制if,for用法
  6. What are the 10 algorithms one must know in order to solve most algorithm challenges/puzzles?
  7. android中handler用法总结
  8. SystemFile
  9. qml+opencv(二),实现人脸检测
  10. 点击轮播图片左右button,实现轮播效果
  11. 如何从本地把项目上传到github&amp;&amp;如何把github项目通过clone复制下来
  12. DDD理论学习系列(3)-- 限界上下文
  13. 《Spark大数据处理:技术、应用与性能优化》【PDF】 下载
  14. 【转】解决Android 6.0 NoSuchContextException 和WEBVIEW_undefined 的问题
  15. maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目
  16. ubuntu 出错 /etc/sudoers is world writable
  17. “数据上帝” Jeff Hammerbacher
  18. Pandas合并数据集之merge、join方法
  19. javascript获取style兼容性问题
  20. 移动端开发在iOS系统中 new Date() 返回 NaN 的问题

热门文章

  1. scp出现ssh port 22: Connection refused 问题解决具体步骤
  2. 调用save()方法,页面显示保存成功,但是数据库中没有值的原因
  3. 什么是Apache Isis
  4. Hello, GitHub!
  5. hdu 1021 Fibonacci Again(变形的斐波那契)
  6. stm32函数库分析
  7. Office365学习笔记—列表查询,删除条目,更新条目。
  8. 一台ECS服务器,部署多(两)应用,且应用配置不同域名
  9. 『Python题库 - 简答题』 Python中的基本概念 (121道)
  10. 清华大学《C++语言程序设计基础》线上课程笔记04---指针