黑马程序员:OC三大特性


-----------  android培训 java培训 、java学习型技术博客、期待与您交流! ------------

 

1.三大特性:

 1)    封装  2) 继承  3)多态

2.set方法

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

       2> 命名规范:

 

•    1)  方法名必须以set开头

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

•    3)  返回值一定是void

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

•    5)  形参的名称与成员变量名不能一样

 

 

set的声明:
-      (void)setAge : (int) newAge;
set方法的实现:
-      (void)setAge : (int) newAge
{   
   //对传进来的参数进行过滤
    if(newAge <= 0)
       {
           newAge = 1;
       }
    age = newAge;
}


3.get方法:

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

       2>命名规范:

 

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

• 2)  方法名跟成员变量名一致

• 3)  不需要接收任何参数

 

get声明:
-      (int)age;
get实现:
-      (int)age
 
{
    return age;
}
 


4.封装好处:

       1>过滤不合理的值

       2>屏蔽内部的赋值过程

       3>让外界不必关注内部的细节

 

5.成员变量的命名规则:一定要以_下划线开头

int _no;

Sex _sex;

       作用:

1>  让成员变量和get方法的名称区分开

2>  可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量

6.OC弱语法 :OC是在运行过程中才会检测对象有没有实现相应地方法

      

7.类方法

       1>基本概念:直接可以用类名来执行的方法(类本身会在内存中占据存储空间,里面有类/对象方法列表)

    2>类方法与对象方法的对比

l   对象方法

 

• Ø  以减号-开头

• Ø  只能让对象调用,没有对象,这个方法根本不可能执行

• Ø  对象方法能访问实例变量(成员变量)

 

l   类方法

 

• Ø  以加号+开头

• Ø  只能用类名调用,对象不能调用

• Ø  类方法中不能访问实例变量(成员变量)

• Ø  使用场合:当不需要访问成员变量的时候,尽量使用类方法

 

 

8. self关键字

1>成员变量和局部变量同名

 

• Ø  当成员变量和局部变量同名时,采取就近原则,访问的是局部变量

• Ø  用self访问成员变量,区分同名的局部变量

 

2> self:指向了方向调用者,代表着当前对象

       3>使用细节:

 

• Ø  出现的地方:所有的OC方法中(对象方法、类方法),不能出现在函数中

• Ø  使用 self –>成员变量名  访问当前方法调用的成员变量

• Ø  使用 [self 方法名]  来调用方法(对象方法、类方法)

 

4>常见错误

 

• Ø  低级错误:用self调用函数

• Ø  类方法中用self调用对象方法,对象方法中用self调用类方法

• Ø  self死循环

 

 

9.继承

1>  : Animal 继承了Animal,相当于拥有了Animal里面的所有成员变量和方法。    Animal称为Dog的父类;Dog为Animal的子类

2>继承的好处:

 

• Ø  抽取重复代码

• Ø  建立子类之间的关系

• Ø  子类可以拥有父类中得所有成员变量和方法

 

3>继承的坏处: 耦合性太强 ——如果父类删去了,子类就不能作用了

3>注意点

 

• Ø  基本上所有类的根类是NSObject

• Ø  父类写在前,子类写在后

• Ø  不允许子类和父类拥有相同名称的成员变量

• Ø  允许子类和父类拥有相同方法,方法的实现遵循就近原则

• Ø  重写:子类重新实现父类种的某个行为,好处是:覆盖父类以前的做法

 

    4>继承使用场合

 

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

• Ø  当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类,但有些情况下是行不通的,当A和B没有一定的逻辑从属关系时,不适用继承

 

5>组合:  xxx 拥有 xxx   格式: Score *_score

6> super 关键字:

 

• Ø  作用:直接调用父类的某个(对象、类)方法,如果super处在对象方法中,那么就会调用父类的对象方法,super处在类方法中,则调用父类的类方法

• Ø  作用场合:子类重写父类的方法时保留父类的一些行为

 

10.多态(多种形态): 没有继承就没有多态

 

• Ø  多态的体现:父类指针指向子类对象,调用方法时会检测对象的真实形象

• Ø  多态的好处:如果函数、参数中使用的是父类类型,可以传入父类、子类对象

• Ø  多态的局限性:父类类型的变量,不能用来调用子类特有的方法必须强转为子类类型后才能直接调用子类特有的方法。强制类型转换——  

 

      Animal *aa = [Dog new] ;

      Dog *dd = (Dog *) aa ;

 

       

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

详情请查看:http://edu.csdn.net/heima

       

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值