黑马程序员:OC学习日记之三大特性

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

继承好处:

1.抽取重复代码
2.建立了类之间的关系
1.子类可以拥有父类中的所有成员变量和方法
不允许子类和父类拥有相同名称的成员变量
调用某个方法时,优先在当前类中找,如果找不到就去父类找
重写:子类重新实现父类的某个方法,覆盖以前的做法
耦合性太强
---------继承和组合———
Score *_score;
————super—————
直接调用父类中的某个方法
super处在类方法中,那么久会调用父类的类方法
使用场合,子类重写父类的方法时保留父类的一些行为
————多态————
1.没有继承就没有多态
2.代码的体现:父类类型的指针指向子类对象
3.好处:如果函数|方法参数中使用的是父类类型,可以传入父类、子类对象

4.局限性:父类类型的变量不能直接调用子类持有的方法(强转为子类类型)

以上概念根据黑马入学视频学习整理所得.

概念不多说,下面看我写的这个综合实例你就会觉得一切是如此的简单.

封装,继承,多态综合实例:

#import <Foundation/Foundation.h>
@interface Animal : NSObject
{
    int _age; // 封装对象 _age 可读可写
}
- (void)test1; // 声明测试方法
- (void)setAge:(int)age; // age 的 setter方法 实现可写
- (int)age; // age 的getter方法实现 实现可读
@end

@implementation Animal
- (void)setAge:(int)age // 实现可写
{
    _age = age;
}
- (int)age // 实现可读
{
    return _age;
}
- (void)test1 // 实现测试方法
{
    [self setAge:10]; // 设置age 值为10
    NSLog(@"Animal-test1 年龄为%d",[self age]); // 打印age值
}
@end

@interface Dog : Animal // 继承

- (void)test1; // 声明test1方法

@end

@implementation Dog
- (void)test1 // 实现test1方法
{
    [self setAge:11]; // 设置age值
    NSLog(@"Dog-test1 年龄为%d",[self age]); // 打印age值
}
@end

int main()
{
    Animal *a = [Dog new]; // 多态 用父类指针指向子类对象
    //多态局限性:父类类型的变量不能用来调用子类的方法
    [a test1]; // 不建议这么调用,虽然能调用成功
    
    Animal *a2 = [Animal new]; // 创建Animal对象
    [a2 test1]; // 调用 Animal的test1方法
    
    Dog *a3 = [Dog new]; // 创建Dog对象
    [a3 test1]; // 调用 Dog的test1方法
    
    return 0;
}

小小的程序用到了OC的封装继承和多态,有没有感觉好不可思议呢?OC就是如此的简单实用,为学OC加油!为自己加油!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值