OC-类有三大特性:封装 继承 多态

01).封装

   封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。简而言之,信息隐藏,隐藏对象的实现细节,不让用户看到,以此来增强安全性和简化编程,进而达到封装的目的。
   使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。

访问修饰符:private、protect、public、Internal

private:私有的,不可供外部访问的信息,只有类本身能存取.系统默认@private

protect:受保护的,类和派生类可以存取.

Internal:只有同一个项目中的类可以存取.

Public:外部可以直接访问 person->name = @“jack”;

   //封装 (setter和getter)成对出现
    - (void)setName:(NSString *)name;//声明
    - (NSString *)name;//声明


    - (void)setName:(NSString *)name //实现
    {
        _name = name;
    }
    - (NSString *)name//实现
    {
        return _name;
    }

    [p setName:18];//赋值
    [p name];      //取值

    //只有getter没有setter,叫做只读封装

扩展:如何让1个方法不被外界访问,只需要在.m文件中实现这个方法,不需要在头文件中定义,即只有实现,没定义.

02).继承

  OC 的继承具有 单继承 的特点,每个子类都只能有一个直接父类。然而,他可以有无限多个间接父类。

当子类继承父类时,子类可以得到父类的:

1.全部成员变量

2.全部方法

03).多态

  一种事物的多种形态。不同类的对象可以定义共享相同名称的方法,这个就是多态的表现形式。

实现多态的条件:

1.必须存在继承关系

2.子类重写父类的方法

3.父类声明的变量指向子类对象

OC指针类型的变量有两个:编译时类型和运行时类型。编译时类型由声明变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现多态。

父类:动物类 HMAnimal.h

#import <Foundation/Foundation.h>

@interface HMAnimal : NSObject
{
    //年龄
    int _age;
}

//吃
-(void)eat;
//跑
-(void)run;

@end

父类:动物类HMAnimal.m

#import "HMAnimal.h"

@implementation HMAnimal

//吃
-(void)eat{

    NSLog(@"动物在吃");

}
//跑
-(void)run{

    NSLog(@"动物会跑");
}

@end

子类:狗狗类 HMDog.h

#import "HMAnimal.h"

@interface HMDog : HMAnimal

//dog类已经有了父类的属性和行为

//狗特有的行为
-(void)lookHome;

@end

子类:狗狗类 HMDog.m

#import "HMDog.h"

@implementation HMDog

//重写父类的方法
-(void)eat{


    NSLog(@"狗正在吃芝麻酱和红糖");

}

-(void)run{

    NSLog(@"狗一边叫,一边跑");

}

-(void)lookHome{

    NSLog(@"狗会看家");
}

@end

运行 main.m

#import <Foundation/Foundation.h>
#import "HMDog.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {


        HMAnimal *ani1 = [HMDog new];//父类指针指向子类对象,这就是多态
        [ani1 eat]; //运行结果由实际赋给该变量的对象决定
        [ani1 run];

    }
    return 0;
}

2017-06-20 23:17:15.450844+0800 多态[2295:564455] 狗正在吃芝麻酱和红糖
2017-06-20 23:17:15.451833+0800 多态[2295:564455] 狗一边叫,一边跑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值