Objective-c - NSObject万能指针

/*

 Objective-c - NSObject万能指针

 

 

 里氏替换原则:

    父类的指针指向子类的对象,对程序没有任何的影响,这就是里氏替换原则.

 

 NSObject类是所有OC类的父类,根据里氏替换原则,NSObject指针可一直想任意的OC对象.


 NSObject指针指向子类对象的时候,如果要调用子类对象独有的方法,就必须做类型转换.

 

 NSObject指针是一个万能指针.

 当指针类型是(NSObject *)类型的时候,编译器要做编译检查.

 

 NSObject指针的局限性,只能使用中括弧调用方法,不能使用点语法.

 

 如下代码:

 

 */




#import <Foundation/Foundation.h>


#pragma mark -

#pragma mark 人类的创建

//声明

@interface YYPerson : NSObject


@property NSString *name;

@property int age;


- (void)sayHi;


@end


//实现

@implementation YYPerson


- (void)sayHi

{

    NSLog(@"大家好!我叫%@,我今年%d岁了!", _name, _age);

}


@end


#pragma mark -

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

    

    //创建人类对象

    YYPerson *xiaoming = [YYPerson new];

    

    //赋值属性

    xiaoming.name = @"小明";

    xiaoming.age = 18;

    //调用方法

    [xiaoming sayHi];

    

    

    //创建人类对象(父类指针指向子类对象)

    NSObject *xiaohua = [YYPerson new];

    [(YYPerson *)xiaohua setName:@"小花"];//NSObject指针的局限性,只能使用中括弧调用方法,不能使用点语法.

    [(YYPerson *)xiaohua setAge:20];

    

    //NSObject指针指向子类对象的时候,如果要调用子类对象独有的方法,就必须做类型转换.否则就会报错.

    [(YYPerson *)xiaohua sayHi];

   

    return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值