Java中final 一般是什么作用,什么情况用

 我来答
千叶育儿
推荐于2017-10-04 · 育儿、诗词分享,每天进步一点点!
千叶育儿
采纳数:1524 获赞数:5378

向TA提问 私信TA
展开全部
1. 修饰基础数据成员的final
这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改。如java.lang.Math类中的PI和E是final成员,其值为3.141592653589793
和2.718281828459045。
2. 修饰类或对象的引用的final
在Java中,我们无法让对象被修饰为final,而只能修饰对象的引用,这意味着即使你写public final A a = new A(); 事实上a指向的对象的数据依然可以被修改,不能修改的是a本身的引用值,即你不能再对a进行重赋值。同样的情况出现在数组中,比如public final int[] a = {1, 2, 3, 4, 5},事实上a中的数值是可修改的,即可以写a[0] = 3。据目前了解,java中数组内的数据是无法修饰为不可修改的,而C/C++可以。
3. 修饰方法的final
修饰方法的final和C/C++中修饰成员对象的const大不相同。首先,修饰方法的final含义不是“不可修改”,而是指该方法不可被继承成员重新定义。(注意,这里所说的不能被重新定义,并不是指子类一定不能定义同名方法,如果父类的方法是私有类型,子类是允许定义该方法的,这里指的不能重新定义是指不能通过改写方法来使得方法重写的多态性得以实现,如不希望A a = new B(); a.f();这样的重写方法情况出现)
示例:
public class A {
// final方法f
public final void f() {
System.out.println("类A中的final方法f被调用了");
}
}
public class B extends A {
// 编译错误!父类的f方法是final类型,不可重写!
//! public void f() {
//! System.out.println("类B中的方法f被调用了");
//! }
}
zhoudha
生活家

2014-10-18 · 知世故而不世故地生活
知道大有可为答主
回答量:2.4万
采纳率:91%
帮助的人:153万
展开全部
final修饰的,一般就是固定的,不能再修改了,而且也不能被继承。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jonia917
推荐于2018-11-02 · 知道合伙人互联网行家
Jonia917
知道合伙人互联网行家
采纳数:924 获赞数:2784
我毕业于一所普通的本科高校软件工程专业,学士学位。现在一家IT公司担任初级软件卡发工程师

向TA提问 私信TA
展开全部
根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Mr丶_Ant
2014-10-18
知道答主
回答量:1
采纳率:0%
帮助的人:1318
展开全部
定义常量。final 修饰过的方法和属性就不能变了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式