我一直在阅读“Effective Java”我没有真正遵循以下论点。 如果有人可以帮我清除这个
抽象类不能用于定义mixins,原因与它们不能相同 改造现有课程:
特别是“我不明白”抽象类不能改装到现有的类'“
请你举个例子。
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 =摘要%20classes%20cannot%20be%20used%20to%20define%20mixins%20for%第二十条%20same%20reason%20that%20they%20can't%20be%20retrofitted%20onto%20existing%20classes&安培; F =假
由于
答案 0 :(得分:2)
想象一下,如果Java中不存在接口,但Java仍然是单继承。
现在想象一下,如果你想编写一个类是一种流,那么你可以从现有的Stream类继承它,以防止重写所有代码。啊 - 但是你也希望你的类可以序列化,所以你继承了Serializ-等一下......你已经从Stream继承了。你也不能从那个类继承。所以,你现在处于一个困难的位置,你必须重写很多代码或者放弃。
这就是'抽象类无法改装到现有类'的含义 - 如果一个类处于某种类型的层次结构中,那么在不重写类型层次结构的情况下实现/继承新抽象类的行为是不可能的。
(我也同意这本书非常清楚地解释它的评论)