Java中final的用法总结

原创 2008年02月10日 17:52:00

 

1.         修饰基础数据成员的final

这是final的主要用途,其含义相当于C/C++const,即该成员被修饰为常量,意味着不可修改。如java.lang.Math类中的PIEfinal成员,其值为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

修饰方法的finalC/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被调用了");

    //! }

}

此外,当一个方法被修饰为final方法时,意味着编译器可能将该方法用内联(inline)方式载入,所谓内联方式,是指编译器不用像平常调用函数那样的方式来调用方法,而是直接将方法内的代码通过一定的修改后copy到原代码中。这样可以让代码执行的更快(因为省略了调用函数的开销),比如在int[] arr = new int[3]调用arr.length()等。

另一方面,私有方法也被编译器隐式修饰为final,这意味着private final void f()private void f()并无区别。

4.         修饰类的final

当一个类被修饰为final时,它的含义很明确,就是不允许该类被继承,也就是说,该类“绝后”了,任何继承它的操作都会以编译错误告终。这也凸显出Javafinal而不用const作为标识符的理由。

       示例:

       public final class A {

}

// 编译错误!Afinal类型,不可被继承!

//!public class B extends A{

//!}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

解析Java finally

问题分析  首先来问大家一个问题:finally 语句块一定会执行吗?  很多人都认为 finally 语句块是肯定要执行的,其中也包括一些很有经验的 Java 程序员。可惜并不像大多人所认为...

Java中的Final关键字,区分基本数据类型与引用类型,值传递与引用传递

Final可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了。对于基本数据类型声明为Final后其值无法再次改变,对于引用类型,可以改变改引用的内容,但是无法...

Java中final用法总结

一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 ...

Java学习总结5——关键字的用法1(final关键字)

fianl关键字在java中有三种使用情况:数据,方法,类。 一、final数据     对基本类型使用fianl不能改变的是他的数值。而对于对象引用,不能改变的是他的引用,而对象本身是可...

Java final 修饰符的用法总结

final从字面上理解含义为“最后的,最终的”。在Java中也同样表示出此种含义。 final可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。 1. f...

Java中final关键字用法总结

Java中final关键字用法总结 标签: javaclassstring编译器扩展 2009-04-25 16:34 2856人阅读 评论(2) 收藏 举报  分类:   ...

Java中final关键字的用法总结。

Java中final关键字的用法总结。

java Final static 用法总结

一、final   根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。  ...

final关键字在Java中的具体用法总结

关键字final的使用: 在声明Java类、变量和方法时可以使用final关键字修饰,使其具有“终态”的特性。

Java中final的用法总结

1.         修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改。如java.lang.Math类中的PI和E是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)