Nik*_*lic 8 java abstract-class
"abstract"关键字意味着您无法创建类的实例(对象).
Java.Lang.Math前面有以下关键字
public final class Math {
...
}
Run Code Online (Sandbox Code Playgroud)
但没有"抽象"关键字.该类只提供了一组相关的静态变量和方法,如PI和sin().
静态意味着那些变量/方法在对象的不同实例之间不能是唯一的(只有一个与类本身相关的变量/方法的副本).那么为什么甚至允许程序员创建一个类的实例呢?为什么不先用"抽象"?
Bra*_*raj 14
final和abstract关键字不能一起应用,因为final类不能被覆盖,abstract类被用于覆盖.
声明的类
final不能subclassed用于创建immutableString等类
在JSL部分 - 8.1.1中更好地解释了它.类修饰符
一abstract类是一类,它是不完整的,或者被认为是不完整的.
如果类final的定义完整且不需要或不需要子类,则可以声明该类.
以上两种说法都是相互矛盾的.
如果您想了解更多关于然后看看Java的Tutroial上的策略定义为不可变对象
the class as final.更复杂的方法是在中构建the constructor private和构造实例factory methods.Gla*_*boz 12
java.lang.Math 是一个Utility类(仅包含静态实用程序方法).
定义实用程序类的正确方法是使其成为最终的,这样任何其他类都不能扩展它并拥有私有的无参数构造函数,这样就没有人可以创建该类的实例.
所以你将无法创建类的实例.但是,如果你采用抽象方法,你不能使用final,你无法阻止它被扩展.因此,前一种方法更好.
如果它是抽象的,那么有人可以做到
public class NewMath extends Math {
Run Code Online (Sandbox Code Playgroud)
坦率地讲是没有意义的.
但是,您无法创建新的Math实例,因为它的唯一构造函数是私有的:
private Math() {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1552 次 |
| 最近记录: |