id类型实质上是一个指向结构体的指针类型,结构体中只有一个变量 为 Class isa (isa也是指针类型)。任何对象都是id类型,也就是说任何类型的对象都可以用id类型来表示,但是需要注意的是它不是(NSObject *)类型。JAVA中没有id类型这种概念,但是java的Object 和OC中的(NSObject *)类型类似。我们可以让没有继承关系的多个类的实例对象用id类型来表示,并且在这些类中定义方法名相同的实现,然后这些用id类型表示的没有继承关系的对象,执行同名的方法,会有不同的执行结果。这就是没有继承的多态,它是基于id类型实现的,java中没有类似id类型的概念,所以自然就不能实现没有继承的多态。
|
|