A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 翟宇浩 中级黑马   /  2015-9-8 10:31  /  442 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Person类和Animal类的父类是NSObject,Dog类的父类是Animail类

#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

        isInstance = [ani isKindOfClass:[Animal class]];
        //   1        ani是Animal类的实例对象,所以是1

        //2)isMemberOfClass  判断对象是否是指定类的实例对象(对象和类)
        //格式:  [对象 isMemberOfClass: 类对象]

        isInstance = [ani isMemberOfClass:[Animal class]];
        //   1        ani是Animal类的实例对象,所以是1

        isInstance = [dog isMemberOfClass:[Animal class]];
        //   0        dog是是Animal子类Dog的实例对象,而非Animal的实例对象,所以是0

        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;
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马