我有一个在很多情况下都很有用的Vector3i类,但我发现自己扩展了它,使用类型系统来防止错误。
例如,我可能有一个"以自我为中心"的矢量3i,它是世界中一个物体的局部,还有一个世界坐标矢量3i。
二者自然不相容,互不转换,彼此没有意义。
这将是一个很好的情况,使用真正的匈牙利符号,但相反,我扩展类,并没有增加新的功能。
考虑JVM/hotspot优化是否会导致性能损失?
继承是一个强大的工具,但是这种强大是有代价的。继承本身有很多陷阱和问题。特别是,它会破坏封装,并且在不小心实现时可能导致代码脆弱。
Java中的继承机制已经连续开发了15年以上。你可以信赖它的快速和高效。如果您的数据模型调用,那么传递继承没有与性能相关的重要原因。
对于您的情况,通过组合而不是继承来表示您的功能可能更有意义(换句话说,不是让ClassB扩展ClassA,而是使ClassA成为ClassB中的实例字段,然后将方法调用委托给封装的对象)。你至少应该考虑一下。与继承相比,组合产生的代码更健壮,更不脆弱。