【发布时间】:2016-04-02 14:06:23
【问题描述】:
我在大学里参加了面向对象编程的考试。其中一个问题是关于静态绑定和动态绑定。
问题如下:
Shape s; if(i==1) s = new Point(1,2); else s = new Rectange(10,20); //this is dynamic binding.
我的老师说答案是“不”,因为它是静态绑定。
据我所知,静态绑定和动态绑定仅在我调用方法时才会发生。我阅读了有关此主题的所有 StackOverflow 问题和大量博客文章,我能想到的唯一答案是存在动态绑定。
任何解释将不胜感激。
【问题讨论】:
-
您将
s硬编码为指的是Point或Rectangle实例……这有什么动态? -
这只是一个猜测,但也许你老师的意思是可能的类型在编译时是已知的。无法在运行时引入新的未知类型,就像使用反射来实例化对象一样。
标签: java dynamic-binding late-static-binding