多态、动态类型、动态绑定

多态能够使来自不同类的对象定义相同名称的方法。动态类型能使程序执行时才确定对象的属性。动态绑定则能使程序直到执行时才确定实际要调用的对象方法。

使不同的类共享相同方法的名称的能力叫做多态。

 

动态绑定和id类型

 

        //动态绑定实例

        id dataValue;

        Fraction *f1 = [[Fraction alloc] init];

        Complex *c1 = [[Complex alloc] init];

        

        [f1 setTo:2 over:5];

        [c1 setReal:10.0 andImaginary:2.5];

        

        dataValue = f1;

        [dataValue print];

        

        dataValue = c1;

        [dataValue print];

 

动态绑定能使程序直到执行时才确定要调用的对象的方法。

id为动态类型,而动态类型能是程序直到执行时才确定对象的类型。

 

其中 id dataValue; //这里没有声明的时候加上“*” 星号

答案在于:Objective-C系统总是跟踪对象所属的类。先判定对象所属的类,然后在运行时确定需要调用的方法,而不是在编译的时候。

 

不能为id变量使用点运算符,如果你尝试这样使用,编译器就会报错。

你可能感兴趣的:(Objective-C)