OC基础—三大特性之继承
2014-04-24 20:27
274 查看
------ android培训、java培训、期待与您交流! ----------
OC基础—三大特性之继承
三大特性之继承:用于类与类之间,继承某个类就拥有了这了类的所有成员变量和方法
例子:
继承的好处:
1. 抽取相同的代码
2. 建立了类之间的关系
继承的特点:子类可以拥有父类中所有的成员变量和方法。
注意!:基本上所有类的根类是NSObject
继承的注意点:
1. 父类必须声明在子类的前面(只关注声明)
2. 子类不能拥有和父类相同的成员变量
3. 调用某个对象的方法时,优先在当前对象中找,如果找不到就去父类中找。(每个对象中都有一个isa指针指向类,每个类里也有个指针superclass指向父类)
继承缺点:类之间的耦合性太强(两个类之间的关系太强,当某个类改变,另一个类以无法使用)。
例子:
继承的适用场合:
1. 当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取出来放到一个父类中
2. 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类
super关键字:
举一个植物大战僵尸例子(僵尸:跳跃僵尸,舞王僵尸,铁桶僵尸)
super的作用:
1. 直接调用父类中的某个方法
2. 如果super处在对象方法中,那么就调用父类中的对象方法
3. 如果super处在类方法中,那么就调用父类中的类方法
------ android培训、java培训、期待与您交流! ----------
OC基础—三大特性之继承
三大特性之继承:用于类与类之间,继承某个类就拥有了这了类的所有成员变量和方法
例子:
#import <Foundation/Foundation.h> // ***********Animal类声明************* @interface Animal : NSObject { int _age; double _weight; } // set与get方法 - (void)setAge:(int)age; - (int)age; - (void)setWeight:(double)weight; - (double)weight; @end // ***********Animal类实现************* @implementation Animal // set与get方法声明 - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } - (void)setWeight:(double)weight { _weight = weight; } - (double)weight { return _weight; } @end // *************dog类声明*************** // 这里:Animal就是代表继承Animal,这里: 就是继承的意思,相当于拥有了Animal里面的所有成员变量和方法 // Animal成为Dog的父类,Dog成为Animal的子类 @interface Dog : Animal @end // *************dog类实现*************** @implementation Dog @end int main( ) { Dog *d = [Dog new]; [d setAge:10]; NSLog(@"狗的年龄是%d", [d age]); return 0; }这里Dog类就是继承了Animal类,虽然Dog类中没有写变量和方法,但是继承了Animal类就可以使用这个类中的所有成员变量和方法。
继承的好处:
1. 抽取相同的代码
2. 建立了类之间的关系
继承的特点:子类可以拥有父类中所有的成员变量和方法。
注意!:基本上所有类的根类是NSObject
继承的注意点:
1. 父类必须声明在子类的前面(只关注声明)
2. 子类不能拥有和父类相同的成员变量
3. 调用某个对象的方法时,优先在当前对象中找,如果找不到就去父类中找。(每个对象中都有一个isa指针指向类,每个类里也有个指针superclass指向父类)
继承缺点:类之间的耦合性太强(两个类之间的关系太强,当某个类改变,另一个类以无法使用)。
例子:
#import <Foundation/Foundation.h> // ********Person********** @interface Person : NSObject { int _age; } - (void)setAge:(int)age; - (int)age; - (void)run; @end @implementation Person - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } - (void)run { NSLog(@"Person跑起来了"); } @end // *******Student********** @interface Student : Person { int _no; // 不允许子类和父类拥有相同变量的成员变量 //int _age; } - (void)run; @end @implementation Student // 重写:子类重新实现父类中的某个方法 // 好处:覆盖父类以前的做法 - (void)run { NSLog(@"Student跑起来了"); } @end int main( ) { Student *s = [Student new]; // 这里调用run方法时,会先去Student中去找,如果找不到就去父类中找,再找不到就去上一级中找 [s run]; return 0; }重写:子类重新实现父类中的某个方法。 好处:覆盖父类以前的做法
继承的适用场合:
1. 当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取出来放到一个父类中
2. 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类
super关键字:
举一个植物大战僵尸例子(僵尸:跳跃僵尸,舞王僵尸,铁桶僵尸)
#import <Foundation/Foundation.h> // ***********僵尸************** @interface Zoombie : NSObject - (void)walk; + (void)test; - (void)test; @end @implementation Zoombie + (void)test { NSLog(@"Zoombie+test"); } - (void)test { NSLog(@"Zoombie-test"); } - (void)walk { NSLog(@"往前走两步"); } @end // ***********跳跃僵尸*********** @interface JumpZoobie : a23c Zoombie + (void)haha; @end @implementation JumpZoobie // 跳也是走的一种方式,所以重写父类的walk方法 - (void)walk { NSLog(@"往前跳一下"); //NSLog(@"往前走两步"); [super walk]; // 调用父类的walk方法 } + (void)haha { // 调用父类的+test方法,因为haha是一个类方法,所以这里的super调用的是父类中的类方法+test [super test]; } @end int main( ) { JumpZoobie *jz = [JumpZoobie new]; [jz walk]; [JumpZoobie haha]; return 0; }
super的作用:
1. 直接调用父类中的某个方法
2. 如果super处在对象方法中,那么就调用父类中的对象方法
3. 如果super处在类方法中,那么就调用父类中的类方法
------ android培训、java培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- 黑马程序员——OC语言基础——面向对象三大特性之继承
- 黑马程序员--ios基础--oc--三大特性
- JavaScript基础--面向对象三大特性(八):继承封装多态
- 黑马程序员————OC面向对象_三大特性之继承与多态
- OC学习篇之---类的三大特性(封装,继承,多态)
- OC温故:面向对象的三大特性(封装,继承,多态)
- OC温故:类的三大特性(封装,继承,多态)
- OC的基础语法OC继承和复合语言特性目标动作回调
- JavaSE 基础 第32节 三大特性之继承
- OC学习篇之---类的三大特性(封装,继承,多态)
- 黑马程序员—OC语言基础—面向对象的三大特性(2)
- OC学习篇之---类的三大特性(封装,继承,多态)
- OC学习篇之---类的三大特性(封装,继承,多态)
- 黑马程序员-OC之面向对象的三大特性:封装、继承和多态
- java基础之三大特性 类的继承和方法重写
- 黑马程序员——OC基础——面向对象的三大特性(三)
- OC-5-三大特性:继承
- OC学习篇之---类的三大特性(封装,继承,多态)
- [.net 面向对象编程基础] (12) 面向对象三大特性——继承