猿问

请教编译期和运行期的区别

在学到设计原则"多组合,少继承"时,文中提到:

 继承的子类,实际上需要编译期确定下来。而组合却可以比继承灵活得多,可以在运行期才决定某个对象。

我想问一下,这里的编译期和运行期分别指什么意思?为什么通过组合就能在运行期决定某个对象呢? 谢谢~


潇潇雨雨
浏览 692回答 2
2回答

哆啦的时光机

简单来说:A从B继承,这一点是不能在运行期改变的。也就是说,你New出来一个A对象,那么,他一定具有B对象的特性和行为(当然不包括重写过的方法)。你在代码编译成执行文件后,就不能改变了。但是,如果A组合了一个B对象。你就可以在运行时改变这一点。比如:你让A抓着一个B的子类而不是B来实现需要B完成的功能。这样为你的系统提供了更大的灵活性。
随时随地看视频慕课网APP
我要回答