黑马程序员技术交流社区

标题: oc多态的用法 [打印本页]

作者: sunyongji    时间: 2015-12-3 23:33
标题: oc多态的用法

继承与组合
继承:子类和父类的关系--->子类is父类
不能只为了继承而继承,要考虑两者的重属关系
使用场合:
如果一个类a需要拥有另一个类b的全部属性和行为,且两者属于同一类, 可以让a类继承b类,这样就可以让a类继承b类,a中只需要添加自己独有的方法和属性就可以了。
a是b;
组合:一个类里,包含另一个类的对象

                super的用法
表示:调用父类的方法

使用场合:
当子类重写父类的方法时,在某些情况下,只能调用父类方法的功能
注意:对象方法中只能调用父类对象方法,类方法只能调用类的对象方法
如果子类没有重写父类的方法,没有必要用super 用self就好。所以只有在子类重写父类方法的时候,我们调用父类方法,才使用super
属性不能用super,因为子类不能重写父类的属性
super只适用于方法

继承
继承的表现
多个类存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可,这种拥有另一个类的属性和方法的方式叫做继承
一个父类的子类可以有多个,但只有一个父类

继承要注意的问题
子类和父类不能有相同的成员变量(属性)
但子类可以拥有与父类相同一方法
父类必须声明在子类的前面

只支持单继承,不支持多继承
一个类只能有一个父类,不可以有多个父类,但支持多层继承
(继承体系:c继承b,b继承a)

定义继承需要注意:
不要仅为了获取其他类中某个属性能去继承。
类与类之间要有所属关系,这样才有继承
必须xx1is xx2
如果不属于同一类,就用组合

继承与组合
继承是一个类是一个类
组合是一个类含有一个类

继承的使用组合
1 两个类都拥有一部分相同的属性和行为,可以把公共的部分抽取成一个父类,然后二者都继承父类
2 一个类需要拥有另一个类的全部属性和行为,则让这个类继承另一个类,这个类本身再实现自己独有的属性和行为

组合的使用场合:
当两个类不属于同一类,但是又需要建立关联的时候,可以用组合

super
是一个关键字
有什么用?
可以在子类调用父类中被重写的方法
怎么用?
调用方法:[super 方法名];
什么时候用?
当子类重写父类的方法后,在某些情况下,又需要用到父类方法功能的时候
特点
1 只能类方法调用类方法,对象方法中调用对象方法
2 不能调用非重写的方法,不能调用属性,只能调用方法

多态:事物的多种形态
生活中的体现
人:警察,小偷
动物:狗,猫
代码的体现:父类的指针指向子类的对象
dog*d=[dog new]// 普通写法
animal*a=[dog new]// 多态

什么是多态?
父类的指针指向子类的对象
多态的作用
具有极强的扩展性.一个指针可以表示不同的子类对象 。

多态有什么局限?
父类的指针指向子类时,如果要调用子类的独有方法,必须强转.
没有继承就没有多态!!!
作用及优点:增强扩展性
1 一个类可以表示多种对象
2 如果方法参数中使用的是父类类型可以传入父类,子类对

局限性
父类类型的变量不能直接调用子类特有(重写的不算)的方法
必须强转为子类类型后,才能直接调用子类独有的方法.

                            NSString
NSString是foundation框架的一个工具类

// 扩展定义字符串


把每一个类的声明与实现分离,声明现在同名的.h文件中,实现写在同名的.m文件中,同一个类的两个文件同名,在实现的.m类中要导入要用到的声明文件,在其他文件中,如果要使用这个类,只需要把这个类的声明import过来的

1,command+方向左(右):吊饰到行首或行尾
选中代码->右击—>structure—>re-indent:格式化代码
command+/:注释代码/取消注释
删除一行:(不会保留空行)
1 选中一行的方式:连续按鼠标左键三次
2 把选中的那行按delete直接删除
方式二:会保留空行
1,把光标放在行首,
2 ,control+k  直接删除

移动一行:
1 ,把光标放到行的任意位置.
2,alt(option)+command+[或];表示上移动或者下移动

查看文档说明
选中一个方法或函数或类.....按option键,出现问号时,鼠标左击

进入一个类或方法或变量
进入一个方法或函数或类......按command出现下划线时,鼠标左击

2,断点试调 ->用于试调代码
可以检查(跟踪)代码执行过程中任意时刻变量的变化
执行方式:在想关注的那一行代码添加断点,如果有多行,就添加多个断点。
则 代码执行到这一行,会暂停,等待你操作,同时可以把鼠标放到任意变量上,看这一时刻这个变量的值,按下一个断点跳跃键,会执行到下一个断点,直到所有断点执行完
断点的三种状态:打开,关闭,删除
3 xcode注释
用法一
#pragma mark (Xcode独有的函数)<你的注释>
可以在方法预览栏里体现,同时支持快速跳转
用法二:
#pragma mark -name的set方法
在注释前加横杆表示把当前注释与上一个注释之间用做分割(用横线),这个可以用于注释分组

用法三:
放在代码之间,用于标注位置,方便快速跳转#pragma mark 这里没有写完,还需要完善

4,代码模版
作用:把一段复用性很高的代码,保存起来,成为一个模版
注意:要定义快捷键,代码模版描述清楚




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2