Objective-C中如果申明了类,然后定制这个对象的话,叫做static typing. 与其相对的是用id来动态的声明一个对象,将来在使用的时候可以将它弄成任意的类。
static typing的好处很多,但是不能取代dynamic binding 和 dynamic determination of a receiver's class.
任何一种对象,都可以用它所属类的父类来声明,编译的时候没所谓,runtime的时候会找出来它真正属于的类。NSObject中间还有两个方法用于揭示一个对象究竟属于那个类,他们分别是isMemberOfClass 和 isKindOfClass,这两个方法传入的参数都是someClass ,返回值是一个bool值,其中isMemberOfClass 是用以判断这个Object是不是后面那个传入的类的实例,另外一个方法isKindOfClass是用于判断这个Object 是不是后面那个传入类的实例又或者是是它父类的实例。总之是要判断这个Object是否在后面传入这个类的继承树上。
另外Objective-C中的abstract Class 与其他语言的中的规定有所不同,它没有专门标注这种抽象类的说明符号,也并不禁止从抽象类生成实例,但是因为抽象类中的很多方法并没有完成,所以即便是生成了抽象类的实例大多数情况下也没什么用处,不过也有例外,就是NSView这个类,经常被直接的使用,而另外一个经典的例子就是NSObject如果你生成一个这样的实例将什么也做不了。
没有评论:
发表评论