黑马程序员——面向对象

黑马程序员——面向对象

 

****类的创建以及使用****

.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、类方法不依赖于对象,执行效率高,能尽量用类方法的尽量用

*/

 

posted @ 2015-10-22 11:32  gaozp  阅读(129)  评论(0编辑  收藏  举报