`
Mybeautiful
  • 浏览: 298928 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

我不知道何谓动态绑定

阅读更多

     CSDN有一贴问何谓动态绑定 http://topic.csdn.net/u/20101010/17/76b449c3-916e-41a2-91e8-a7ba932df906.html, 说实话我也不知道,只是凭自我感觉,我的回复如下:

 

----------------------------------------

所谓动态绑定,是这个概率搞复杂了,说白了就是,
你定义了有一个"类型" A, 这个A可能是个接口,也可能是个抽象类或是普通类,如

Java code
public class Test { A a; // public void setA (A aa){ this.A=aa; } }

 


这样,你开始new这个Test对象是,是不是a是null (没有实例化)? 然后在程序运行中,你可以随时调用 setA给 a赋个值, 比如ccc。 这就是所谓的动态绑定。注意这个ccc一定是A的实现,或子类.

注意:这里的setA方法,只是我想说明动态绑定的一种实现方法,并不是唯一的方法。


故:动态绑定就是,在程序运行中实例化某个"类型".

 

--------------------------------

 

      不过后面有兄弟明确指出我这样理解动态绑定是不正确的,可能是概念搞混了。所以我Google了一下"动态绑定", 结果我还是不知道何谓动态绑定。 不知道有仁兄给个官方好理解的答案否? 如不能,我也只能继续的错误理解了。

----------------------------------------------------------------------

张瑜,Mybeautiful, zhangyu0182@sina.com.

2
1
分享到:
评论
1 楼 langyu 2010-10-22  
动态绑定可能的理解是这样吧?

调用程序时使用的是一个接口或父类的方法如:
//有这样的一个接口,表示所有设备,每个设备都会有设备名称
public interface Device {
    public String getName();
}

//设备管理器只知道自己管理的是设备,但不知道具体是什么设备
public class DeviceMonitor {
   public void monitor(Device device) {
       System.out.println("Device name is " + device);
       //doing monitor work
   }
}

//有一台电脑,它也属于设备
public class Computer implements Device {
    public String getName() {
        return "pc_1";
    }
}


//注意这里的一行,对于monitor来说,它不知道自己管理的设备,直到程序运行期,它才知道具体管理的设备究竟是什么。将具体的某个Device实例与Device接口绑定起来的动作由JVM来做,应该就是动态绑定的概念吧?
public class DeviceController {
    public static void main(String[] a) {
        DeviceMonitor monitor = new DeviceMonitor();
        Device device = new Computer();
        //Attention please, the concrete instance of Device
        monitor.monitor(device);
    }
}




也请参考资料:Dynamic_binding     or    What Is Dynamic Binding

相关推荐

Global site tag (gtag.js) - Google Analytics