首页 > 代码库 > final关键字(final是最终的)

final关键字(final是最终的)

final关键字(final是最终的)

1.final修饰特点

    a.修饰类,类不能被继承

    b.修饰变量,变量就变成了常量,只能被赋值一次 final int num = 10;一般会搭配两个关键字public static final double p1 = 3.14;(谁都可以去访问)

c.修饰方法,方法不能被重写

2.final关键字修饰局部变量

a.修饰基本类型,是值不能被改变(报错无法为最终变量NUM分配值)

b.修饰引用类型,是地址值不能被改变,对象中的属性可以改变

例:

class bj08_20 {

    public static void main(String[] args) {

        //final修饰基本数据类型

        final int NUM = 10;

        System.out.println(NUM);

//final修饰引用数据类型

        final Person p = new Person("张三",23);

        //p里面是个地址值

        //p = new Person("李四",24);再次改变p值是不允许的,可以改变对象的属性值

        p.setName("李四");

        p.setAge(24);

        System.out.println(p.getName() + "..." + p.getAge());

        method(10);

        method(20);//之前method弹栈消失了

 

    }

    public static void method(final int x) { //方法声明上final修饰的

        System.out.println(x);

    }

}

3.final修饰变量的初始化时机

1)final修饰变量的初始化时机----有几种初始化的方法

        a.显示初始化:final int num = 10;

        b.在对象构造完毕前即可(构造方法初始化)

注意:

final修饰方法不可以被其他重写 public final void print() {}不希望任何方法被重写,就把类定义成final class Father{}

写了一些方法后不想让子类改变了.

 

例:

class Demo {

int num;

}

Demo d = new Demo();

在创建对象时,num会默认初始化值0

final修饰的值只能被赋值一次,成员变量的默认初始化值是无效值(有默认初始化值),所以一定要进行显示初始化值(赋值)(即final num = 10).若果没有进行赋值,会报错:可能尚未初始化变量num.

例:

class Demo {

final int num;

public Demo {

num = 10;//在在对象构造完毕前即可

}

}

Demo d = new Demo();

 

final关键字(final是最终的)