黑马程序员-OC-继承

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

继承在面向对象的语言中有着广泛而重要的应用,是最基本的知识之一。

下面定义两个类:Animal, Pig. 其中Pig继承自Animal类。
则pig继承了Animal的所有属性和方法,不需要在Pig类中再次定义相同的属性和方法,但Pig可以重写父类Animal的方法。
Animal.h中的代码:

#import <Foundation/Foundation.h>

@interface Animal : NSObject
{

    //下面实例变量定义为protected,也是默认的类型
//    @protected表示只有当前类及子类可以访问
//    @public 表示在任何地方,只要声明类或其子类都可以访问
//    @private 表示除了当前类,其它任何类都不可以访问,但子类可以继承。
    @protected
    int _age;
    int _speed;
    NSString * _name;
}
-(void)run:(int)speed;
-(void)bark:(NSString *)name withAge:(int)age;

//set 方法
-(void)setAge:(int)age;
-(void)setSpeed:(int)speed;
-(void)setName:(NSString *)name;

//get 方法
-(int)age;
-(int)speed;
-(NSString *)name;

@end

Animal.m中的代码:

#import "Animal.h"

@implementation Animal
-(void)run:(int)speed{
    NSLog(@"animal is running, speed is %d.",speed);
}
-(void)bark:(NSString *)name withAge:(int)age{
    NSLog(@"an animal is bark, its name is %@, age is %d.",name,age);
}

//set 方法
-(void)setAge:(int)age{
    _age = age;
}
-(void)setSpeed:(int)speed{
    _speed = speed;
}
-(void)setName:(NSString *)name{
    _name = name;
}

//get 方法
-(int)age{
    return _age;
}
-(int)speed{
    return _speed;
}
-(NSString *)name{
    return _name;
}
@end

pig.h中没有声明新的属性或方法,pig.m中代码:

#import "Pig.h"

@implementation Pig
-(void)run:(int)speed{
    NSLog(@"the cute pig is running, pig's speed is %d.",speed);
}
-(void)bark:(NSString *)name withAge:(int)age{
    NSLog(@"the fat pig is barking, Pig's name is %@, age is %d.",name,age);
}
@end

主函数main()代码:

#import <Foundation/Foundation.h>
#import "Animal.h"
#import "Pig.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Animal *ani = [Animal new];
        Pig *pig = [[Pig alloc]init];
        ani.age = 2;
        ani.speed = 80;
        ani.name = @"hinani";

        pig.age = 3;
        pig.speed = 90;
        pig.name = @"bajie";

        [ani run:ani.speed];
        [ani bark:ani.name withAge:ani.age];

        [pig run:pig.speed];
        [pig bark:pig.name withAge:pig.age];
    }
    return 0;
}

输出结果如下:
输出结果如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值