|
1
196
这里您最好的参考是Joshua Bloch的优秀著作《高效Java》中的第19项,该书名为“继承的设计和文档,否则禁止继承”。(第二版是第17项,第一版是第15项。)你应该认真阅读,但我会总结一下。 如果祖先不是为了继承而设计的,那么继承类与其父类之间的交互可能会令人惊讶且不可预测。 因此,课程应分为两类:
|
|
|
2
31
您可能希望将一个方法设为final,以便重写类不能更改其他方法中依赖的行为。构造函数中调用的方法通常声明为final,这样在创建对象时就不会出现任何令人不快的意外情况。 |
|
|
3
22
|
|
|
4
16
有3个用例可以用于最终方法。
期末考试的目的: 所以没有人可以扩展这些类并改变它们的行为。
|
|
5
12
您可能希望创建不可变对象( http://en.wikipedia.org/wiki/Immutable_object ),您可能希望创建一个单例( http://en.wikipedia.org/wiki/Singleton_pattern ),或者出于效率、安全或安全考虑,您可能希望阻止某人重写该方法。 |
|
|
6
7
请参阅有效的Java第二版第16条和第17条,或我的博客文章 "Inheritance Tax" |
|
7
4
六羟甲基三聚氰胺六甲醚。。。我可以想到两件事:
更现实的方法是避免对象变为可变的。例如,由于字符串是不可变的,您的代码可以安全地保留对它的引用
而不是先复制字符串。但是,如果您可以对字符串进行子类化,您可以向其添加允许修改字符串值的方法,现在没有代码可以再依赖于,如果它只是如上所述复制字符串,那么该字符串将保持不变,而必须复制该字符串。 |
|
|
8
3
阻止人们做可能使自己和他人混淆的事情。想象一个物理库,其中有一些定义的常数或计算。如果不使用final关键字,就可以有人来重新定义基本计算或永远不会改变的常数。 |
|
|
9
2
|
|
|
10
2
如果您将类和方法标记为final,您可能会注意到一个小的性能提升,因为运行时不必查找正确的类方法来调用给定的对象。非final方法被标记为virtual,以便在需要时可以适当地扩展它们,final方法可以在类中直接链接或内联编译。 |
|
|
11
0
|
|
Fernando Chu · 一个变量有多个可能的类?[关闭] 1 年前 |
|
|
Amaterastis · 基类接受子类和内部子类的模板参数 1 年前 |
|
|
Rishab Negi · 这个关键字在抽象类中是如何工作的 1 年前 |
|
|
dEmigOd · 类层次结构中的运算符重载解析 1 年前 |
|
|
TableTopRug · 如何从Kotlin中的密封类继承? 1 年前 |
|
|
hasdrubal · 抽象基类函数指针python 2 年前 |
|
|
Josh · 通过反思访问孩子的财产 2 年前 |