面向对象的特性:继承

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------



  继承

/*

 继承的好处

 1. 抽取重复代码

 2. 建立了类和类之间的关系

 3. 子类拥有父类中得所有成员变量和方法

 

 继承的实现步骤:

 

 1> 先要导入继承的类的头文件

 

 2> 修改类的声明,把父类名改成要继承的那个类的名称

 

 @interface 类名: 父类名

 @end

 

 @implementation 类名

 @end

 

 注意点:

  基本上所有类的根类是NSObject

 */


/*

 1. 重写: 子类重新实现父类中得某个方法,覆盖父类以前的做法

 2. 注意

 1> 父类必须声明在子类的前面

 

 2> 调用某个方法时,优先在当前类中找,如果找不到,就去父类中找

 类和类之间的指针是 superclass

 

 3> 子类不能定义和父类同名的实例变量

 

 4> OC中得类是单一继承,一个类只能继承一个父类

 

 5> oc中得类可以支持多层继承

 

 2. 坏处: 耦合性太强

 */

/*

 super 关键字

 

 1. 直接调用父类中的某一个方法

 2. 如果super处在对象方法中,那么就会调用父类的对象方法

    如果super处在类方法中,那么就会调用父类的类方法

 

 3. 使用场合: 子类重写父类的方法时想保留父类的一些行为

 

 

 

 */

/*

 继承的使用场合:

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

 

 2> A类完全拥有B类中得部分属性和方法时,可以考虑让B类继承A

 

 继承是: xx xxx

 组合: xxx 拥有 xxx

 

 

 //继承

 A

 {

 int _age;

 int _ no;

 }

 B : A

 {

 int _weight;

 }



 //组合:在不适合继承的情况下,就用组合,比如Student Score

 A

 {

 int _age;

 int _ no;

 }

 B

 {

    A *_a; //组合

    int _weight;

 }

 

 */

#import <Foundation/Foundation.h>

#pragma mark Animal类的声明

//Animal 类的声明

@interface Animal : NSObject

{

    int _age; //年龄

    double _weight;//体重

}

//方法的声明

- (void)setAge:(int)age;

- (int)age;

- (void)setWeight:(double)weight;

- (double)weight;

@end

//Animal类的实现

#pragma mark Animal类的实现

@implementation Animal

- (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的子类 或称为   Dog为派生类  Animal为基类

 

 */

@interface Dog : Animal

@end

@implementation Dog

@end


//Cat

@interface Cat : Animal

@end

@implementation Cat

@end

int main(int argc, const char * argv[]) {

  

    //创建一个Dog类的对象

    Dog *d = [Dog new];

    [d setAge:10];

    NSLog(@"%d",[d age]);

    

    return 0;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值