您的位置:首页 > 职场人生

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

2014-10-21 20:45 405 查看
------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加油!为自己加油!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: