OOP是否只是组织代码(在维护,更新应用程序时让您的生活更轻松),还是组织和优化(性能,引擎盖下)?
例如:
public class Ferrari {
..speed;
..color;
..changeGear(){..change-gear-class-releated-stuff like 8 gears or something}
..turnLeft(){...}
同样如:
public class Ferrari extends Car {
@Override
..changeGear(){
super.changerGear();
..change-gear-class-releated-stuff like 8 gears or something
}
public class Car{
..speed;
..color;
..changeGear(){...}
..turnLeft(){...}
为了表现?
答案 0 :(得分:2)
在编译语言中,它不会提高性能,可能只是增加编译时间。
答案 1 :(得分:1)
由于继承,面向对象可能会阻止某些算法优化。两种算法可以很好地协同工作,但是如果它们隐藏在OO接口之后,那么使用它们的协同作用的可能性就会丢失。
看看数值库。他们中的很多人(不仅是60年代或70年代的人)都不是OOP。有一个原因 - 数值算法作为一组解耦模块比使用接口和封装的OO层次结构更好。
答案 2 :(得分:1)
基本上没有。
与所有事情一样,你必须在几乎所有事情上坚持一个大的IT部门,但就执行性能而言,不,继承并不能提高性能。
它可以改进的是整体代码密度,因为共享代码在子类之间真正共享,而不是重复。
在某些语言实现中,继承会降低性能。考虑运行时在子类上搜索方法。当它首次查找该方法时,它会发现该方法在子类上不存在,然后必须对该方法的相应超类执行搜索。那些超级搜索肯定会产生一些影响。
但这是一个实施细节。其他系统将在编译时支付该成本,而不是运行时,因此没有实际的性能成本。
所以,你可以看到它不一定是黑白解决方案。