------- android培训、java培训、期待与您交流! ----------
1、类与对象概述
类是具有相同特征和行为事物的抽象,类可以表征事物的基本属性以及作用其上的操作。如苹果类,其基本属性有颜色、品种、重量等等,对于苹果类的操作也可以多样,对于苹果可以吃、可以榨汁等等。
对象是类的对某一抽象类的具体化,对应现实生活中的某一特定实体。如果把人类作为一个类,爱因斯坦就是一个对象。
2、类的抽象
将具有相同属性和行为的事物对象进行抽象概括,称为类的抽象。
类的抽象举例:
坦克发射了3枚导弹轰炸了2架飞机
类的抽象过程分析:该语句涉及了三个类,分别为坦克、导弹、飞机。每个类又有自己的属性,在这里只关心语句设计到的属性和行为,如坦克类的属性为装载的导弹数,行为是发射导弹;导弹的行为是飞行、爆炸;飞机的行为是飞行、是否被击毁。
3、类的声明与实现
3.1 类的声明
类的声明包括类属性的定义与类方法的声明,类的声明内容置于关键字@interface与@end中。
(1) 类属性的定义
类属性的定义内容为类成员变量的定义部分,置于"{}"之间,且类方法与对象方法不能在此部分出现。
(2) 类的方法声明
类的方法声明有类方法声明与对象方法声明,均需要置于"{}"之外。其中类方法类型标识符为'-',对象方法的为'+'。
举例说明枪类的声明:
@interface gun:NSObject { int _bullet;//枪内子弹数量 } + (void)shoot;//对象方法射击 - (void)Alert;//类方法提示这是一把枪,请注意安全使用 @end
3.2 类的实现
类的实现部分代码需要置于@implementation与@end之间,该部分代码为类的方法代码实现。
举例说明枪类的实现:
@implementation gun + (void)shoot { NSLog(@"tu tu tu....剩余子弹%d",_bullet); } - (void)Alert { NSLog(@"这是一把枪,请注意安全使用"); } @end
3.3 #pragma mark指令的使用
#pragma指令为编译器的一种预取指令,#pragma mark指令的使用可以将代码分组,在Xcode中便于代码的查找,可以导航到代码的位置,进而便于程序员的代码管理与阅读。
#pragma mark指令使用实例:
指令使用注意:#pragma mark - #pragma mark 枪类 @interface gun:NSObject { int _bullet;//枪内子弹数量 } + (void)shoot;//对象方法射击 - (void)Alert;//类方法提示这是一把枪,请注意安全使用 @end
“#pragma mark -”与“#pragma mark - ”使用结果不同,前者可以在代码索引时会在代码间添加横向输出,而后者将会出现两条线。#pragma mark指令测试:
4、对象的实例化与对象方法的调用
4.1对象的实例化
对象的实例化过程也可以称为对象的创建过程,分为内存空间的申请和成员变量的初始化。
实例化的方法:(1) new方法
格式:类名 *对象名= [类名 new];
示例:Car *car = [Car new];
使用new实例化对象进行三部分操作:
1)为类申请内存空间
2)成员变量初始化
3)将内存空间地址返回给对象名
(2) alloc与init方法
alloc为申请内存空间操作,init为初始化操作。
格式:类名 *对象名=[[类名 alloc] init];
示例:Car *car =[[Car alloc] init];
4.2对象方法的调用
(1) 无参对象方法的调用
格式:[对象名 方法名];
示例代码:
Car *car = [Car new]; [car run];
(2) 含参数对象方法的调用
格式:[对象名 方法名一:参数一 方法名二:参数二……];
示例代码:
Calculator cal = [Calculator new]; int result = [cal sum:3 and:2];
5、多文件开发
头文件的编写,内容主要是类的声明与头文件的引入。
代码示例:
//Car类声明Car.h文件 #import <Foundation/Foundation.h> @interface Car:NSObjet { int _speed;//车运行时速 } - (void)run;//对象方法 @end
源文件的编写,内容主要是类方法与对象方法的实现。
代码示例:
//Car类实现Car.m文件 #include "Car.h" @implementation Car - (void)run{ NSLog(@"小车正在以%d的速度,奔跑在小路上",_speed); } @end
主函数的调用,代码示例:
<span style="font-size:14px;">#import <Foundation/Foundation.h> #include "Car.h"//将Car类声明文件引入 int main(int argc, char* argv[]){ @autoreleasepool{ Car *car = [Car new];//实例化对象car car->_speed = 50; [car run];//调用对象方法run } return 0; }</span>