黑马程序员——面向对象
黑马程序员——面向对象
****类的创建以及使用****
.h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end
.m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementaion和@end
方法:
方法的声明和实现都必须以“+”“-”开头
+ 表示类方法(静态方法)
- 表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型,不能更改
成员变量(实例变量\属性):
@public 全局都可以访问
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
类的定义分为两部分
1)类的声明(规定当前类的:类名、属性、行为)
@interface 类名:父类名 (NSobject)
{
//定义类的属性
}
//类的行为
@end
2)类的实现(实现具体行为)
@implementation 类名
//行为的具体实现
@end
方法的实现: 先把方法声明抄过来, 再加个大括号, 在里面写实现代码, 方法内部如果要访问当前对象的成员变量, 直接写变量名字就可以。
*/
1 //创建一个类,并且创建一个对象,并且用对象访问存储空间的值 2 3 /*创建一个新对象:Car *car=[Car new];*/ 4 5 #import <Foundation/Foundation.h> 6 7 //车的类的声明 8 9 @interface Car:NSObject 10 11 { 12 13 //类的属性 14 15 @public; 16 17 int lunzi;//车的轮子 18 19 NSString *color;//车的颜色 20 21 int speed;//车的速度 22 23 } 24 25 //类的行为 26 27 @end 28 29 //类的实现 30 31 @implementation Car 32 33 //行为的具体描述 34 35 @end 36 37 int main (int argc, const char *argv[]) 38 39 { 40 41 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 42 43 //创建Car类型的对象car1 44 45 Car *car1=[Car new]; 46 47 //创建一个对象,实质还是指针 (用指针间接访问实例变量值) 48 49 car1->lunzi=3; 50 51 car1->speed=150; 52 53 car1->color=@"蓝色"; 54 55 //查看车的信息 56 57 NSLog(@"轮子:%d,速度:%d,颜色:%@",car1->lunzi,car1->speed,car1->color); 58 59 [pool drain]; 60 61 return 0; 62 63 }
/*OC中对象的创建
[Car new];
//做了三件事
1、项计算机申请内存空间
2、给类中的每一个成员初始化值
3、返回申请的空间的首地址
Car *p=[Car new];
理解一:
//定义了一个Car类型的指针变量
//指针变量指向新申请的内存空间
理解二:
//用Car类实例化了一个实例对象,对象的名称是p
*/
1 //创建一个类,并且创建一个对象,并且用对象访问存储空间的值 2 3 /*创建一个新对象:Car *car=[Car new];*/ 4 5 #import <Foundation/Foundation.h> 6 7 //车的类的声明 8 9 @interface Car:NSObject 10 11 { 12 13 //类的属性 14 15 @public; 16 17 int lunzi;//车的轮子 18 19 NSString *color;//车的颜色 20 21 int speed;//车的速度 22 23 } 24 25 //类的行为 26 27 @end 28 29 //类的实现 30 31 @implementation Car 32 33 //行为的具体描述 34 35 @end 36 37 int main (int argc, const char *argv[]) 38 39 { 40 41 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 42 43 //创建Car类型的对象car1 44 45 Car *car1=[Car new]; 46 47 //创建一个对象,实质还是指针 (用指针间接访问实例变量值) 48 49 car1->lunzi=3; 50 51 car1->speed=150; 52 53 car1->color=@"蓝色"; 54 55 //查看车的信息 56 57 NSLog(@"轮子:%d,速度:%d,颜色:%@",car1->lunzi,car1->speed,car1->color); 58 59 [pool drain]; 60 61 return 0; 62 63 }
****无参方法声明及调用****
方法类型标示符 (返回值类型) 方法名称:
不带参数的方法
声明:
-(返回值类型) 方法名 -(double) pi
方法调用:[类名或者对象名 方法名];
****对象方法与类方法区别****
对象方法:
1、对象方法以“-”开头,如-(void) xx;
2、对象方法只能有对象来说明
3、对象方法中可以访问当前对象的成员变量
4、调用格式 [对象名 对象方法名];
类方法:
1、类方法以“+”开头,如+(void) xx;
2、类方法只能由类来调用
3、类方法不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成员变量
4、调用格式:[类名 类方法名];
5、类方法不依赖于对象,执行效率高,能尽量用类方法的尽量用
*/