黑马程序员——oc之继承
2015-09-10 23:50
567 查看
-------android培训、java培训、iOS培训、.Net培训、期待与您交流!
----------
一、基本用法
1.设计两个类Bird、Dog
1 // Bird的声明
2 @interface Bird
: NSObject
3 {
4 @public
5 int weight;
6 }
7 - (void)eat;
8 @end
9 // Bird的定义
10 @implementation Bird
11 - (void)eat {
12 NSLog("吃吃吃-体重:%d", weight);
13 }
14 @end
15 // Dog的声明
16 @interface Dog
: NSObject
17 {
18 @public
19 int weight;
20 }
21 - (void)eat;
22 @end
23 // Dog的定义
24 @implementation Dog
25 - (void)eat {
26 NSLog("吃吃吃-体重:%d", weight);
27 }
28 @end
2.有相同的属性和行为,抽出一个父类Animal(先抽取weight属性,再抽取eat方法)
1 // Animal的声明
2 @interface Animal
: NSObject
3 {
4 @public
5 int weight;
6 }
7 - (void)eat;
8 @end
9 // Animal的定义
10 @implementation Animal
11 - (void)eat {
12 NSLog("吃吃吃-体重:%d", weight);
13 }
14 @end
3.子类在父类的基础上拓充属性和方法
1 // Bird的声明
2 @interface Bird
: Animal
3 {
4 @public
5 int height;
6 }
7 - (void)fly;
8 @end
9
10 // Bird的定义
11 @implementation Bird
12 - (void)fly {
13 NSLog("飞飞飞-高度:%d", height);
14 }
15 @end
16
17 // Dog的声明
18 @interface Dog
: Animal
19 {
20 @public
21 int speed;
22 }
23 - (void)run;
24 @end
25 // Dog的定义
26 @implementation Dog
27 - (void)run {
28 NSLog("跑跑跑-高度:%d", speed);
29 }
30 @end
二、继承的使用注意
(1)编译器从上往下执行,所以在子类前面至少应该要有父类的声明;
(2)OC中不允许子类和父类拥有相同名称的成员变量名;
(3)OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果没有则一层一层的往上找;
(4)OC语言是单继承语言。在OC语言中,基本上所有类的根类都是NSObject类。
提示:重写即子类重新实现了父类中的某个方法,覆盖了父类以前的实现。
提示:每个类中都有一个super class指针,该指针指向自己的父类。对象中有一个isa指针,该指针指向调用该对象的类。
三、super关键字
super关键字,在子类中重写方法时,可以让调用者跳过这一层而调用父类中的方法。
作用:
(1)直接调用父类中的某一个方法
(2)super处在对象方法中,那么就会调用父类的对象方法;super处于类方法中,那么就会调用父类的类方法。
使用场景:子类在重写父类方法时,想要保留父类的一些行为。
四、继承的好处和缺点
继承的好处:
(1)抽取出了重复的代码
(2)建立了类和类之间的联系
继承的缺点:
耦合性太强
----------
一、基本用法
1.设计两个类Bird、Dog
1 // Bird的声明
2 @interface Bird
: NSObject
3 {
4 @public
5 int weight;
6 }
7 - (void)eat;
8 @end
9 // Bird的定义
10 @implementation Bird
11 - (void)eat {
12 NSLog("吃吃吃-体重:%d", weight);
13 }
14 @end
15 // Dog的声明
16 @interface Dog
: NSObject
17 {
18 @public
19 int weight;
20 }
21 - (void)eat;
22 @end
23 // Dog的定义
24 @implementation Dog
25 - (void)eat {
26 NSLog("吃吃吃-体重:%d", weight);
27 }
28 @end
2.有相同的属性和行为,抽出一个父类Animal(先抽取weight属性,再抽取eat方法)
1 // Animal的声明
2 @interface Animal
: NSObject
3 {
4 @public
5 int weight;
6 }
7 - (void)eat;
8 @end
9 // Animal的定义
10 @implementation Animal
11 - (void)eat {
12 NSLog("吃吃吃-体重:%d", weight);
13 }
14 @end
3.子类在父类的基础上拓充属性和方法
1 // Bird的声明
2 @interface Bird
: Animal
3 {
4 @public
5 int height;
6 }
7 - (void)fly;
8 @end
9
10 // Bird的定义
11 @implementation Bird
12 - (void)fly {
13 NSLog("飞飞飞-高度:%d", height);
14 }
15 @end
16
17 // Dog的声明
18 @interface Dog
: Animal
19 {
20 @public
21 int speed;
22 }
23 - (void)run;
24 @end
25 // Dog的定义
26 @implementation Dog
27 - (void)run {
28 NSLog("跑跑跑-高度:%d", speed);
29 }
30 @end
二、继承的使用注意
(1)编译器从上往下执行,所以在子类前面至少应该要有父类的声明;
(2)OC中不允许子类和父类拥有相同名称的成员变量名;
(3)OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果没有则一层一层的往上找;
(4)OC语言是单继承语言。在OC语言中,基本上所有类的根类都是NSObject类。
提示:重写即子类重新实现了父类中的某个方法,覆盖了父类以前的实现。
提示:每个类中都有一个super class指针,该指针指向自己的父类。对象中有一个isa指针,该指针指向调用该对象的类。
三、super关键字
super关键字,在子类中重写方法时,可以让调用者跳过这一层而调用父类中的方法。
作用:
(1)直接调用父类中的某一个方法
(2)super处在对象方法中,那么就会调用父类的对象方法;super处于类方法中,那么就会调用父类的类方法。
使用场景:子类在重写父类方法时,想要保留父类的一些行为。
四、继承的好处和缺点
继承的好处:
(1)抽取出了重复的代码
(2)建立了类和类之间的联系
继承的缺点:
耦合性太强
相关文章推荐
- 黑马程序员——oc之多态
- 黑马程序员——oc之self的使用
- ButterKnife Android程序员的一大利器
- 黑马程序员--学习笔记--IO流File文件操作
- 黑马程序员——oc之Foundation框架
- Android面试自我介绍
- 剑指Offer第四章面试题(Java版)
- 面试必备:文本框与按钮的最简组合
- 面试题5:从尾到头打印链表
- 初级程序员学习网址搜集(持续更新)
- 黑马程序员—–UDP协议传输
- AdaultBird--我的黑马程序员之路!Chapter10---java反射!
- 《程序员面试金典》--空格替换
- 面积最大的全1子矩阵(腾讯2012年暑期实习生招聘面试二面试题)
- 黑马程序员_java09_集合框架
- 机器学习笔试面试系列算法集锦
- 最适合程序员编程的10款字体
- 面试题二叉树相关问题总结
- 程序员必须开始的道路
- iOS开发:iOS常见面试题