您的位置:首页 > 移动开发 > Objective-C

Object-C 面向对象的三大特征

2015-07-27 18:37 621 查看

Object-C 面向对象的三大特征

封装

定义
隐藏内部实现,稳定外部接口
1.属性封装了实例变量
2.方法封装了具体实现的代码
3.类封装了属性和方法
作用
1.属性封装了实例变量
2.方法封装了具体实现的代码
3.类封装了属性和方法


继承

为什使用继承?
在开发过程中,我们会发现很多代码相同,特别是创建一些类的时候,发现类于类之间有很多相同属性及方法,这些方法和属性会写很多次,如果程序员这样干,就很蛋疼了。在面向对象中,有继承的概念。我可以使用继承方式将相同的属性和方法放到一个类中,然后其他类继承于此类,我们将这种方式叫做继承。
继承即是让一个类拥有另一个类的某些属性和方法的特性。被继承的类称为父类(基类),继承类称为子类。子类可以直接拥有父类中的所有非私有成员和方法

什么时候使用继承?

在开发中发现一些具有相同的特性和方法时,我们就使用继承。
在OC中只有单继承的概念,并没有多继承。


多态

多态是建立在继承的基础上面
1.继承同一父类的子类,他们本身具有自己的特性
2.继承同一父类的子类,在执行同样的命令的时候,具有不同的效果


新建一个Role类,再新建两个类Hero,Monster类来继承于Role类

Role.h文件

#import <Foundation/Foundation.h>

@interface Role : NSObject

-(void)attack:(Role *)role ;

@end


Role.m文件

#import "Role.h"

@implementation Role

-(void)attack:(Role *)role
{
NSLog(@"正在攻击");
//里氏替换原则
if ([role isMemberOfClass:[Monster class]])
{
//强转一下类型
Monster *m = (Monster *)role ;
}
if ([role isMemberOfClass:[Hero class]])
{
Hero *h = (Hero *) role ;
}
}

@end


Hero.m文件

#import "Hero.h"
#import "Monster.h"
@implementation Hero

-(void)attack:(Role *)role
{
[super attack:role];
NSLog(@"hero attack");
}
@end


Monster.m文件

#import "Monster.h"
#import "Hero.h"
@implementation Monster

-(void)attack:(Role *)role
{
[super attack:role];
NSLog(@"monster attack");
}
@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: