我一直在读《Effective Java》,我并没有真正遵循以下论点。 如果有人可以帮我解决这个问题
抽象类不能用于定义 mixins,其原因与它们不能定义 mixin 的原因相同。 改造现有的类:
尤其是“我不明白‘抽象类不能改造到现有类上’”
请举个例子。
http://books.google.se/books?id=ka2VUBqHiWkC&lpg=PA93&dq=Abstract%20classes%20cannot%20be%20used%20to%20define%20mixins%20for%20the%20same%20reason%20that%20they%20can 't%20be%20retrofitted%20onto%20existing%20classes&pg=PA93#v=onepage&q=Abstract%20classes%20cannot%20be%20used%20to%20define%20mixins%20for%20the%20same%20reason%20that%20they%20can't %20be%20retrofitted%20onto%20existing%20classes&f=false
谢谢
最佳答案
想象一下,如果 Java 中不存在接口(interface),但 Java 仍然是单继承。
现在想象一下,如果您想编写一个属于流的类,那么您可以让它继承现有的 Stream 类,以防止重写所有代码。啊 - 但你也希望你的类是可序列化的,所以你从 Serializ 继承 - 等一下......你已经从 Stream 继承了。您也不能从该类继承。因此,您现在处于一个困难的境地,您必须重写大量代码,或者干脆放弃。
这就是“抽象类不能 retrofit 到现有类上”的含义 - 如果一个类位于某个类型层次结构中,则在不重写类型层次结构的情况下使其实现/继承新抽象类的行为是不可能的。
(我也同意书上解释得很清楚的评论)
关于Java 抽象类不能 retrofit 到现有类上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14739748/