Java抽象类无法在现有类上进行改进

时间:2013-02-06 22:04:50

标签: java abstract-class mixins

我一直在阅读“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 =假

由于

1 个答案:

答案 0 :(得分:2)

想象一下,如果Java中不存在接口,但Java仍然是单继承。

现在想象一下,如果你想编写一个类是一种流,那么你可以从现有的Stream类继承它,以防止重写所有代码。啊 - 但是你也希望你的类可以序列化,所以你继承了Serializ-等一下......你已经从Stream继承了。你也不能从那个类继承。所以,你现在处于一个困难的位置,你必须重写很多代码或者放弃。

这就是'抽象类无法改装到现有类'的含义 - 如果一个类处于某种类型的层次结构中,那么在不重写类型层次结构的情况下实现/继承新抽象类的行为是不可能的。

(我也同意这本书非常清楚地解释它的评论)