OC类的继承


类的继承

1.继承的好处
1>抽取重复的代码
2>建立类与类之间的关系
3>子类可以拥有父类的所有成员变量和方法
注意:基本上所有类的根类都继承NSObject类
如下例子说明:
#import <Foundation/Foundation.h>

@interface Animal : NSObject  //声明一个动物类,继承NSObject
{
    int _age;//设置年龄
    double _weight;//设置体重
}
- (void)setAge:(int)age;
- (int)age;
- (void)setWight:(double)weight;
- (double)weight;
@end

@implementation Animal
- (void)setAge:(int)age
{
    _age=age;
}
- (int)age
{
    return _age;
}
- (void)setWight:(double)weight
{
    _weight=weight;
}
- (double)weight
{
    return _weight;
}
@end


/*****Dog的声明******/
@interface  Dog :Animal  //Dog具有动物的属性,所以狗继承动物类,避免了一些代码的重复写
@end

@implementation Dog
@end

/******Cat的声明********/
@interface Cat :Animal   //Cat也具有动物的属性,所以继承动物类
@end

@implementation Cat
@end

int main()
{
    Dog *d=[Dog new];  //创建一个Dog对象
    [d setAge:10];
    
    NSLog(@"狗的年龄是:%d",[d age]);
    
    return 0;
}
利用类的继承使类与类建立关系,减少了不必要的代码,使代码结构清晰

2.类的重写
1>重写:子类重写了父类的某个方法,覆盖父类以前的做法
2>注意
*父类必须声明在子类前面
*子类不能拥有父类同名的成员变量
*调用某个方法时,先在当前对象中找,如果找不到,去父类中找
坏处:耦合性太强
如下例子说明:
#import <Foundation/Foundation.h>

@interface Person : NSObject //声明一个Person类,声明在Student类前,继承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(@"跑起来了");
}

@end

@interface Student :Person //继承Person类
{
    int _no;
    //int _age;//子类不能与父类有相同的成员变量
}
- (void)run;
@end

@implementation Student
//子类重写了父类的某个方法,覆盖父类以前的做法
- (void)run
{
    NSLog(@"student跑起来了");
}
@end

int main()
{
    
    Student *s = [Student new];
    [s run]; //调用run方法,首先在Student类中找run方法
    
    return 0;
}
运行结果: student跑起来了而不是:Person跑起来了,因为Student类中也有run方法,所以调用Student中的方法

今天的学习总结就是这些,希望大家评点






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值