问题:使用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