面向对象
面向对象(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 = 10;//设置对象的属性 c->_height = 180;//设置对象的属性 [c run];//调用对象方法 return 0; } /** 内存分析 **/ //[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 : 7];//带参数方法的调用 //int i = [p test : 10 test1 : 9];//多参数方法的调用 NSLog(@"test方法的值是:%i", tmp); return 0; } /** 注意 **/ //没有@interface 只有@implementation 也可以开发一个类 //同一个类中不允许两个对象方法同名 (:也是方法名的一部分) /** 方法语法详解 **/ //- (int) test : (int) i; //方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名; //[p test : 7] //[指针变量名 方法名 : 实际参数] //- (int) test : (int) i test1 : (int) i1; //方法类型 (方法返回值类型) 方法名 : (参数类型) 参数名 方法名 : (参数类型) 参数名; //[p test : 10 test1 : 9] //[指针变量名 方法名 : 实际参数 方法名 : 实际参数]