問題:使用final類的作用是什么?
我在看一本關于Java的書,它里面說你可以定義一個類為final。我搞不明白有什么地方會被用到這樣。
我是一個編程萌新。我想知道程序員在他們的程序里面都是怎么用fianl類的。如果知道他們是什么時候使用的話,我就會理解得更加深入并且知道什么時候使用它了。
如果Java是一門面向對象的語言,但是又聲明了一個類為常量,那不就是和類是含有對象的特點這個觀點沖突了嗎?
回答一
The best example is
最好的例子就是:
public final class String
這就是一個不變的類,不能被擴展。當然啦,還有一大堆聲明類為final的,使得那個類不能改變的例子
回答二
final class can avoid breaking the public API when you add new methods
當你添加新方法時,final類可以避免打破被public修飾的API
Suppose that on version 1 of your Base class you do:
假設你寫一個第一個版本的基本的類
public class Base {}
然后客戶就這樣搞:
class Derived extends Base {public int method() { return 1; }
}
然后如果你想往基本版本的那個類里面加點方法
class Base {public String method() { return null; }
}
那客戶的代碼就要出問題了
如果我們使用了一個final代替的話呢,那個客戶就不能夠繼承我們的那個類咯,方法的添加就不可能打破我們的API啦
回答三
Java里面final關鍵字通常在以下幾種情況下被使用
- Final Variables
- Final Methods
- Final Classes
在Java里面常量不能被改變,final類不能被繼承,final方法不能被重寫
文章翻譯自Stack Overflow:https://stackoverflow.com/questions/5181578/what-is-the-point-of-final-class-in-java