zoukankan      html  css  js  c++  java
  • 对java中final关键字的理解

    在java语言中,final关键字指的是“它是无法改变的”,使用到final关键字有三种情况:数据、方法和类。

    一个既是static又是final的字段只占据一段不能改变的存储空间。

    用final关键字定义的数据:

    1)如果是基本类型的数据,那么final使数值恒定不变;(八种基本类型:boolean,char,byte,short,int,long,float,double)

    2)如果是对象的引用,那么final使对象的引用恒定不变,也就是说一旦指向了某个对象的引用,就无法再把它指向其它对象了;但是对象本身是可以修改的。

    class Foo {
    private String fooName;

    public Foo() {
    // TODO Auto-generated constructor stub
    }

    public String getFooName() {
    return fooName;
    }

    public void setFooName(String fooName) {
    this.fooName = fooName;
    }
    }

    public class TestFoo
    {
    private final Foo foo;

    public TestFoo() {
    foo = new Foo();
    //默认设置fooname
    foo.setFooName("default Foo Name");
    }

    public Foo getFoo() {
    return foo;
    }
    //error,定义为final对象不能被修改
    /*
    public void setFoo(Foo f) {
    this.foo = f;
    }
    */

    public static void main(String[] args) {
    TestFoo tf = new TestFoo();
    Foo f = tf.getFoo();
    System.out.println(f.getFooName());//输出default Foo Name
    f.setFooName("test1");
    System.out.println(f.getFooName());//输出test1
    }
    }

    用final关键字修饰方法:

    1)把方法锁定,以防任何继承类修改(private声明的方法隐式的指定为final,private修饰的方法是无法继承的,可以在private方法上加final进行修饰,但没有任何额外的意义,反而是画蛇添足);

    2)提高效率。如果将一个方法指定为final,那么编译器将针对该方法的所有调用转为内嵌调用。

    用final关键字修饰类:

    当将某个类整体定义为final时,就表明了这个类不会被其它类继承,而且也不允许别人这样做。



  • 相关阅读:
    【Unity3d】Ray射线初探-射线的原理及用法
    unity3d 的Quaternion.identity和transform.rotation区别是什么
    HOLOLENS的空间管理
    vector3.forward和transform.forward的区别!
    voxel 与 pixel
    图文详解Unity3D中Material的Tiling和Offset是怎么回事
    手机开启HDR后拍照有什么不同?
    什么是UV?
    积和式Permanent在Mathematica中的运算
    [再寄小读者之数学篇](2014-11-20 计算二重积分)
  • 原文地址:https://www.cnblogs.com/linxyz/p/2396746.html
Copyright © 2011-2022 走看看