黑马程序员_OC面向对象的特性

来源:互联网 发布:2017个人博客源码下载 编辑:程序博客网 时间:2024/06/06 01:18

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

面向对象三大特征:封装、继承、多态。

  1. 封装
    1).作用:隐藏内部的实现,文档外部接口,封装就是定义类 定义属性 定义方法。
    2).实现方法:
    a.使用@interface和@implementation来处理类,@interface 是像定义在外边的钟表表面,向外界提供展示及接口。@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装起来。
    b.一般一般不用@public、@protected等关键词修饰,而是直接使用set方法来为对象提供变量的值,可以实现对不合理的赋值进行筛选;用get方法给对象返回值
    3).set使用及注意:
    a.作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
    b.命名规范:
    1>方法名必须以set开头
    2>set后面跟上成员变量的名称,成员变量一般以“_”开头,此时set后边不必加“_”,只需要加下划线之后的名称就行,而且成员变量首字母必须大写
    3>返回值一定是void
    4>一定要接受一个参数,而且参数类型跟成员变量类型一致
    5>定义的形参不能和成员变量名一样
    4).get的使用及注意
    a.作用:返回对象内部的成员变量
    b.命名规范:
    1>肯定有返回值,返回值类型和成员变量类型一样
    2>方法名跟成员变量名一样,一般成员变量一般以“_”开头,此时get方法后面一定要加上”_”。
    3>不需要任何参数
  2. 继承
    1).作用:子类继承了父类同样就拥有了父类所有的方法和属性(成员变量)。
    2).继承的优点和缺点:
    a.优点:
    1>抽取出了重复的代码;
    2>建立了类和类之间的关系
    3>子类可以拥有父类中得所有成员变量和方法
    b.缺点:耦合性太强
    3).继承的实现:
    [objc] view plaincopyprint?
    1. @interface Animal:NSObject  
    2. //动物里继承了NSObject,获得NSObject类的方法;  
    3. @end  
    4. @interface Dog :Animal  
    5. //dog类继承Animal类  
    6. @end  
    注意:OC语言是单继承语言。在oc语言中,基本上所有类的根类都是NSObject类。
    4).继承使用注意:
    a.父类必须声明在子类前面;
    b.不允许子类和父类拥有相同的成员变量;
    c.调用某个方法时,优先去当前对象中找,如果找不到,去父类中找;
    d.每个类里面都有superclass指针,都指向父类。
    5).继承和组合
    a.继承的适用场合:
    1>当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中;
    2>当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类(考虑),在这种情况下,也可以考虑使用组合。
    b.区分技巧:
    继承:###是xxx,如狗是动物,可以让狗继承动物
    组合:###拥有xxx,如手机,可以让手机这个类作为类的属性,而不能使用继承。
    6).super关键字
    a.super作用:
    1>直接调用父类的某个方法;
    2>super处在对象方法中,就会调用父类的对象方法;super处于类方法中,就会调用父类的类方法。
    b.super使用场合:子类重写父类的方法时想保留父类的一些行为。
  3. 多态
    1).基本概念:多态就是多种形态,没有继承就没有多态。
    2).代码体现:多态就是父类指针指向子类对象。
    3).使用场合:如果函数或方法参数中使用的是父类类型,可以传入父类、子类对象。
    4).多态局限性
    1>父类类型的变量不能直接调用子类特有的方法。
    2>如果必须要调用子类的方法,必须强制转换为子类类型变量后,才能直接调用子类特有的方法。
  4. 对象方法和类方法的区别:
    1).对象方法:
    a.减号开头;
    b.只能由对象来调用;
    c.对象方法中能访问当前对象的成员变量。
    2).类方法:
    a.加号开头;
    b.只能由类来调用;
    c类方法中不能访问成员变量。
  5. 类方法
    1).使用场合:
    a.不依赖于对象,执行效率高;
    b.能用类方法尽量用类方法。
    2).使用注意:可以允许类方法和对象方法同名。
    3).工具类:没有任何成员变量,而且里面的方法基本都是类方法。
0 0
原创粉丝点击