Java中的脆弱基类问题是什么?
脆弱的基类是继承的普遍问题,它适用于Java和任何其他支持继承的语言。
简而言之,基类是您要从其继承的类,通常将其称为易碎类,因为对此类所做的更改可能会在从其继承的类中产生意外结果。
缓解这种情况的方法很少;但是没有一种简单的方法可以在仍然使用继承的情况下完全避免使用它。您可以通过像final
Java中一样标记类声明来防止其他类从类继承。
避免这些问题中最严重的问题的最佳做法是将所有类标记为final,除非您明确打算从它们继承。对于那些想要继承的对象,就像在设计API一样设计它们:隐藏所有实现细节;对发出的内容进行严格的检查,对接受的内容进行仔细的检查,并详细记录该类的预期行为。
问题内容: 尽管使用了组合而不是继承? 如果是这样,在语言级别上有什么解决方案吗? 问题答案: 正如VonC所写,但我想指出一点。 所述脆弱的基类问题通常归咎于虚拟方法( 方法动态调度 -这意味着如果方法可重写的,其具有的实际实现在这样的重写方法只能在运行时被决定的情况下被调用)。 为什么这是个问题?您有一个类,向其中添加了一些方法,如果进行了调用,则不能保证您所编写的将被调用,并且不能保证子类的
本文向大家介绍Java 中的弱引用是什么,包括了Java 中的弱引用是什么的使用技巧和注意事项,需要的朋友参考一下 Java里一个对象obj被创建时,被放在堆里。当GC运行的时候,发现没有任何引用指向obj,那么就会回收obj对象的堆内存空间。 换句话说,一个对象被回收, 必须满足两个条件: (1)没有任何引用指向它 (2)GC被运行。 在实际开发中,我们可以通过把所有指向某个对象的referec
问题内容: 我有一个Swift类,需要存储自己的方法表。不幸的是,这导致了一个引用周期,因为它的表通过其存储的方法保留了对它的引用。 以下示例泄漏代码: 到目前为止,我发现的唯一解决方案是改为执行此操作: 这很丑陋,而且容易出错。还有更好的主意吗?是否有一些使函数引用本身变弱的技巧?即使类型的数组或什么?据我所知,我什至无法在上述丑陋的封闭包装上构建作为语法糖的便捷功能。 问题答案: 您当然可以为
本文向大家介绍为什么说js是弱类型语言,它的优缺点分别是什么?相关面试题,主要包含被问及为什么说js是弱类型语言,它的优缺点分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 这个题目可以让我们进行充分的思考,通过这几个字,我们可以进行如下拓展: :我们把在使用之前就需要确认其变量数据类型的称为静态语言。 :我们把在运行过程中需要检查数据类型的语言称为动态语言。 通常把偷偷进行类型转换的操作成
问题内容: 说,我有一种方法: 然后在尝试编译此代码时: 我得到一个错误。谁能解释为什么类型系统不能推断Collections.emptyList()应该是类型吗? 上面的示例显然是很人为的,但是我一直都在偶然地遇到这种限制,这确实很烦人。阅读了 Effective Java 之后,我发现您可以轻松地完成工作(必须说,当时对我来说是一个启示),并且一切都可以顺利编译,但是当您使用复杂的类型时,确实
说吧,我有一个方法: 然后在尝试编译此代码时: 我收到错误