使用final类的作用是什么?

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值