黑马程序员--动态类型检测

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

#import <Foundation/Foundation.h>
#import "Dog.h"
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Animal *ani = [Animal new];
        //ani是Animal类的实例对象
        //动态类型检测:
        //1.判断类型
        //1)判断某个对象是否是类的实例对象,或者子类的实例对象(对象和类)
        //isKindOfClass使用格式:[对象 isKindOfClass 类对象];
        BOOL isInstance = [ani isKindOfClass:[Animal class]];
        
        
        Dog *dog = [Dog new];
        isInstance = [dog isKindOfClass:[Animal class]];
        // 1   dog是Animal子类Dog的实例对象,所以是1
        
       // ani = [Dog new];
        
        isInstance = [ani isKindOfClass:[Animal class]];
        
        
        //2)isMemberOfClass  判断对象是否是指定类的实例对象(对象和类)
        //格式:  [对象 isMemberOfClass: 类对象]
        
        isInstance = [ani isMemberOfClass:[Animal class]];
        
        isInstance = [dog isMemberOfClass:[Animal class]];
        
        NSLog(@"%d",isInstance);
        
        //3)isSu判断类是否是指定类的子类(类和类之间的关系)
        //格式:[类A isSubclassOfClass:类B];
        //判断 类A 是不是 类B 的子类,是返回 1,不是返回 0.
        
        BOOL isSub = [Dog isSubclassOfClass:[Animal class]];
        //     1      Dog继承自Animal
        isSub = [[dog class] isSubclassOfClass:[ani class]];
        
        //            后面的类对象必须获取出来,不能直接写类名,前面的可以直接写类名或获取的方法都可以
        
        isSub = [Person isSubclassOfClass:[Animal class]];
        // 0       Person 不是Animal的子类
        
        isSub = [Animal isSubclassOfClass:[Dog class]];
        // 0       继承顺序错误
        
        NSLog(@"isSub = %d",isSub);
              
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值