• 对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时,就表明了这个类不会被其它类继承,而且也不允许别人这样做。



  • 相关阅读:
    5.我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
    sqylog 50道练习题
    sqylog练习题 2018.7.10
    WPF---依赖属性(一)
    C#基础知识---is与as
    C#基础知识---装箱与拆箱
    C#基础知识---Lambda表达式
    C#基础知识---Linq操作XML文件
    C#基础知识---匿名方法使用
    C#基础知识---?为何物
  • 原文地址:https://www.cnblogs.com/linxyz/p/2396746.html
Copyright © 2020-2023  润新知