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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值