码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员-OC-三大特征

时间:2015-01-02 06:22:10      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:

           ------- IOS培训、android培训、java培训、期待与您交流! ----------

 

封装:

将实现细节进行隐藏,将属性私有化,通过公共的方法访问私有的属性,这个过程就是对对象的封装

好处:1.给数据进行了过滤,保证数据的正确性

     2.增加了代码的重用性

     3.将属性进行了私有化,可以保证属性的安全性

set方法

1作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤

2命名规范

1、方法名必须以set开头

2、set后面跟上成员变量的名称,成员变量的首字母必须大写

3、返回值一定是void

4、一定要接收一个参数,而且参数类型跟成员变量类型一致

5、形参的名称不能跟成员变量名一样

1 -(void)setAge:(int)newAge;

 

get方法

1作用:返回对象内部的成员变量

2命名规范

1、肯定有返回值,返回值类型肯定与成员变量类型一致

2、方法名跟成员变量名一样

3、不需要接收任何参数

成员变量的命名规范

成员变量都以下划线 _ 开头

可以跟get方法的名称区分开

可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量 

代码编写:

 1 #import <Foundation/Foundation.h>
 2 
 3 // 声明
 4 
 5 @interface Car : NSObject
 6 
 7 {
 8 
 9     int _wheels; // 轮子个数
10 
11 }
12 
13 // set方法
14 
15 - (void)setWheels: (int)wheels;
16 
17 // get方法
18 
19 - (int)wheels;
20 
21  
22 
23 @end
24 
25 @implementation Car
26 
27 // set方法的实现
28 
29 - (void)setWheels: (int)wheels
30 
31 {       // 对外面传进来的轮子进行过滤
32 
33         if(wheels<=0)
34 
35         {
36 
37             wheels = 1;
38 
39         }
40 
41     _wheels = wheels;
42 
43 }
44 
45 // get方法的实现
46 
47 - (int)wheels
48 
49 {
50 
51     return _wheels;
52 
53 }
54 
55 @end
56 
57  

匿名对象代码编写:

 1 int main(int argc, const char * argv[])
 2 
 3 {
 4 
 5     //实名对象,用同类的指针保存了对象的地址
 6 
 7     Cat *cat1 = [Cat new]; 
 8 
 9     [Cat new];//匿名对象,只是通过new创建了一个对象出来
10 
11     
12 
13     cat1->_name = @"加菲猫";
14 
15     [Cat new]->_name = @"好猫";
16 
17     //打印的是空,因为每new一次创建一个新的对象
18 
19     [[Cat new] lookMyCat];  
20 
21   
22 
23     //匿名对象的作用
24 
25     //1.当调用使用次数很少的方法的时候,就直接使用匿名对象调用。
26 
27     Cat *cat2 = [Cat new];
28 
29     [cat2 lookMyCat];
30 
31     
32 
33     [[Cat new] lookMyCat];
34 
35     
36 
37     //2.匿名对象可以作为参数传递,当不需要给传递的对象的成员变量赋值的时候,就使用匿名对象作为参数传递
38 
39     //Cat *cat3 = [Cat new];
40 
41    // cat3->_name = @"xiao";
42 
43     Person *person1 = [Person new];
44 
45     [person1 feedCat:[Cat new]];
46 
47     
48 
49     //作用:节省代码,节省内存
50 
51     return 0;
52 
53 }
54 
55  

 

继承:

定义:有两个类A类与B类,如果说A类继承了B类,就说A类拥有了B类的所有属性和方法。

继承者叫子类  被继承者叫父类(超类)

继承是单继承,只有一个直接的父类,一个父类可以有多个子类

优点:

1、节省代码,抽取重复代码。

2、建立了类之间的关系。

3、子类可以拥有父类中的所有成员变量和方法。

由于对象之间有了继承关系,才会有多态。

 

缺点:耦合性太强(依赖性太高)

重写:继承中,子类重新写父类中的方法,重写只存在于继承中

注意点:

1、父类必须声明在子类的前面

2、子类不能拥有和父类相同的成员变量

3、调用某个方法时,优先去当前类中找,如果找不到,去父类中找。

 

继承的使用场合:

1、当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中

2、当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A

组合模式:

一个对象作为另一个对象的成员变量

优点:节省了代码,使两个类产生了关系

缺点:依赖性太高(耦合性太高)    

场合:当可以用“谁属于谁”这种方式来表述的时候,就可以用组合模式

利用代码块儿快速生成代码

方法:< + # +代替的部分+#+> 这样这一部分就会变成可编辑的

继承跟组合的区别:

 1 @interface Score : NSObject
 2 
 3 {
 4 
 5     int _cScore;
 6 
 7     int _ocScore;
 8 
 9 }
10 
11 @end
12 
13 @implementation Score
14 
15 @end
16 
17  
18 
19 // 继承:*** 是 ***
20 
21 // 组合:*** 拥有 ***
22 
23 @interface Student : NSObject
24 
25 {
26 
27     //组合
28 
29     Score *_score;
30 
31 //    int _cSore;
32 
33 //    int _ocScore;
34 
35     int _age;
36 
37 }
38 
39 @end
40 
41  

多态:

1、没有继承就没有多态

2、代码的体现:父类类型的指针指向子类对象

3、好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象

4、局限性:

父类类型的变量不能直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法。

 1 int main()
 2 
 3 {
 4 
 5    // 多态:父类指针指向子类对象
 6 
 7     Animal *a = [Dog new];
 8 
 9     //[a run]; 不能指向子类方法
10 
11     return 0;
12 
13 }

 

动态绑定:调用方法时会检测对象的真实形象。

代码编写:

 1 int main()
 2 
 3 {
 4 
 5     // Dog *d = [Dog new];  //Dog类型
 6 
 7     
 8 
 9     // 多态:父类指针指向子类对象
10 
11     Animal *a = [Dog new];
12 
13     
14 
15     // 动态绑定:调用方法时会检测对象真实形象
16 
17     [a eat];
18 
19     return 0;
20 
21 }

 

黑马程序员-OC-三大特征

标签:

原文地址:http://www.cnblogs.com/zhangxining/p/4198068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!