2

我一直在阅读“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=Abstract%20classes%20cannot%20be%20used%20to%20define%20mixins%20for%20the%20same%20reason%20that%20they%20can't%20be% 20改造%20到%20现有%20类&f=false

谢谢

4

1 回答 1

2

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

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

这就是“抽象类不能改装到现有类”的意思——如果一个类处于某种类型层次结构中,那么如果不重写类型层次结构,就不可能实现/继承新抽象类的行为。

(我也同意这本书解释得很清楚的评论)

于 2013-02-06T22:16:47.213 回答