【发布时间】:2012-09-12 15:51:27
【问题描述】:
我想从java.net.URL 继承,但我不能,因为它是最终的。我得到了错误:
cannot inherit from final java.net.URL
为什么是最终的?
对于为什么String is final 状态,JVM 依赖 String 的问题的一些答案,因为它是一种非常基本的数据类型。我看不出这将如何应用于 URL 类型。
更新
许多答案和 cmets 都给出了理由,为什么避免继承是一种好习惯。有些人甚至认为一切都应该是最终的。但实际情况有所不同。 JDK 中的大多数类不是 final。良好的实践是一个不应该不从 java.net.URL 继承的原因。这甚至可能适用于 JDK 的任何类。但是当某些东西被定义为 final 时,can 不能继承。这仅适用于 String 或 URL 等少数几个类。
所以 URL 和所有其他非 final 类之间肯定有一些不同。问题是:这个 URL 是最终的,有什么区别?
说我不应该关心这个问题,因为无论如何我都不应该继承这个问题。
【问题讨论】:
-
我想问你为什么要继承它。了解您在继承背后的目的会很有趣。
-
@Gamp:我想将它包装起来以实现项目特定的错误处理。
-
那我建议你按照 Matt 的建议写一个 Wrapper 类
-
它是final的所以你不能继承它。这就是final的意思。没有别的意思。
-
@EJP:我知道我不能继承。问题是为什么我不能继承。我的意思是必须而不应该。
标签: java