final关键字

2018-06-13  本文已影响9人  erki_stwee

final修饰数据、方法、类
1.final数据
有时候数据的恒定不变是很有用的,它能减轻系统运行时的负担。
final修饰数据可以分为:
1、编译期常量,永远不可改变。
2、运行期初始化时,我们希望它不会被改变。
对于编译期常量,只能使用基本类型,而且必须要在定义时进行初始化。
基本数据类型不可变的是其内容,而引用数据类型不可变的是其引用,引用所指定的对象内容是可变的。

public class TestFinal {

    /**
     * 编译期常量
     */
    private final String final1 = "UartAnd7c";

    /**
     * 运行期初始化
     */
    private final String final2;

    private static Random random = new Random();

    private final int final3 = random.nextInt(50);    //使用随机数来进行初始化

    /**
     * final指向引用数据类型
     */
    public final Person final4 = new Person("songMiaomiao");

    public TestFinal(String final2){
        this.final2 = final2;
        //final1 = "nba";
    }

    @Override
    public String toString() {
        return "TestFinal{" +
                "final1='" + final1 + '\'' +
                ", final2='" + final2 + '\'' +
                ", final3=" + final3 +
                ", final4=" + final4 +
                '}';
    }

    public static void main(String [] args){
        System.out.println("------------第一次创建对象------------");
        TestFinal final1 = new TestFinal("cm");
        System.out.println(final1);
        System.out.println("------------第二次创建对象------------");
        TestFinal final2 = new TestFinal("zj");
        System.out.println(final2);
        System.out.println("------------修改引用对象--------------");
        final2.final4.setName("see you again");
        System.out.println(final2);
    }

}
------------第一次创建对象------------
TestFinal{final1='UartAnd7c', final2='cm', final3=34, final4=Person{name='songMiaomiao'}}
------------第二次创建对象------------
TestFinal{final1='UartAnd7c', final2='zj', final3=29, final4=Person{name='songMiaomiao'}}
------------修改引用对象--------------
TestFinal{final1='UartAnd7c', final2='zj', final3=29, final4=Person{name='see you again'}}

2.final方法
父类的final方法是不能被子类所覆盖的,也就是说子类是不能够存在和父类一模一样的方法的。

3.final类
表示最终类,不允许被继承

4.final参数
在匿名内部类中,为了保持参数的一致性,若所在的方法的形参需要被内部类里面使用时,该形参必须为final。

5.final + static
对于成员变量,该变量一旦赋值就不能改变,我们称它为“全局常量”。可以通过类名直接访问。

对于成员方法,则是不可继承和改变。可以通过类名直接访问。

上一篇 下一篇

猜你喜欢

热点阅读