为了账号安全,请及时绑定邮箱和手机立即绑定

继承会影响应用程序的性能吗?

继承会影响应用程序的性能吗?

慕盖茨4494581 2022-05-21 19:59:40
我想知道是否可以通过使用更多的超类来提高应用程序的性能。我的问题是关于 Kotlin,但我认为 Java 的答案是一样的。假设你有这个继承模式(右边的类是他左边的类的子类):A < B < C < D < E < F < G < ... 以此类推,直到 Z。说您不需要所有子类中定义的所有东西,而只需要A类的属性和功能。出于一个模糊的原因,您的代码仅使用 Z 类。我的问题很简单:如果您将代码更改为仅使用 A 类而不是 Z 类,代码会更高效吗?预先感谢您的回答。
查看完整描述

2 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

如果

“将您的代码更改为仅使用 A 类而不是 Z 类”

包括建设,那么有一个微不足道的答案:

创建和存储具有较少属性/字段的对象比创建具有更多属性的对象便宜,无论是在内存方面还是在初始化时间方面。

除此之外,我预计不会对性能产生重大影响。


也就是说,我不会担心这里的性能 - 选择为您想要做的事情提供最佳抽象的类型。如果您的代码不关心您使用的特定子类并且不需要子类提供的任何功能,请使用更通用的类型。这样你的代码就更灵活了。但是,如果您的代码在某些时候需要这样的功能,即您必须进一步引入强制转换,那么您已经走得太远了。


查看完整回答
反对 回复 2022-05-21
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

答案是肯定的。例如,如果您调用方法 z.someMethod()。Hotspot 将首先在 Z 类中查找方法。如果 HotSpot 没有找到目标方法,它将在 Z 的父级中查找该方法。并继续这些步骤,直到找到目标方法。所以如果继承链很长,查找方法会花费更多时间。

但是,HotSpot 使用一些缓存来加速该过程。


查看完整回答
反对 回复 2022-05-21
  • 2 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信