当我们使用接口调用方法时,是否与内存优化有任何关系。 只有那个方法加载到内存中?当通过对象调用方法时,该对象的所有方法都被加载到内存中吗?
答案 0 :(得分:5)
基于接口的编程与内存消耗无关 - 这是一种增加关注点分离的技术。
当您使用接口作为参数时(例如),您仍然需要传入实现该接口的实际对象。您将通过接口访问它,您可以将其替换为实现该接口的任何其他对象。这是您创建解耦方法的方法。您仍需要传入实际对象的内存。
答案 1 :(得分:2)
如果通过接口或通过引用对象调用方法,则无关紧要。接口引用仍引用实例。该类型有许多方法,这些方法在加载类型时加载(并根据需要编译JIT)。
答案 2 :(得分:0)
不,使用接口调用方法和使用类调用它之间没有实际区别。
当您使用界面时,它只是您的参考不同。引用仍然指向类的实例。不能有接口的实例,因为接口本身不包含任何实现,因此在另一端总是有一个类的实例。
答案 3 :(得分:0)
加载到内存中的哪些方法与接口无关。在.NET中,首次调用方法时,会将其编译为本机代码,然后将其保存在内存中。无论您如何访问它(无论是直接访问,还是使用代理,或使用代理)都无关紧要。
此外,方法本身的内存消耗应该非常低,而且你不应该关心它。
答案 4 :(得分:0)
有点模糊的问题。我猜你在问是否使用接口会以你正在使用的任何语言产生性能损失。
答案一般是..对于C ++(纯虚函数),是的。在某些非常多的电话情况下可能很重要。
对于Java(和.Net),不是真的。