Java final关键字特点

一、特点

1、由于继承,方法可以重写,所以父类的功能就会被子类覆盖
2、有时候我们不想子类覆盖父类的功能,这时候我们可以使用final关键字
3、final可以修饰:类、变量,方法。
4、final修饰类,该类不能被继承
5、final修饰变量,该变量不能被修改,因为这个变量是常量了
6、final修饰方法,该方法不能被重写

二、案例分析

 1 package finals;
 2 /**
 3  * final关键字,案例1
 4  * @author zhongfg
 5  * @date 2015-06-16
 6  */
 7 class Fu {
 8
 9     public final int num = 10;
10     public final void secretMethod() {
11         System.out.println("这里是绝密文件,不能修改");
12     }
13
14     public void show(){
15
16     }
17 }
18
19 class Zi extends Fu {
20
21 //    报错,final修饰的方法不能重写
22     /*public void secretMethod() {
23         System.out.println("我就是要修改,怎么的");
24     }*/
25
26     public void show() {
27 //        num = 100; 报错,final修饰的变量不能被修改
28         System.out.println(num);
29     }
30 }
31
32 public class FinalDemo {
33
34     public static void main(String[] args) {
35
36         Fu fu = new Zi();
37         fu.secretMethod();
38         fu.show();
39     }
40 }
41
42 运行结果:
43 这里是绝密文件,不能修改
44 10

 1 package finals;
 2 /**
 3  * 面试题:final修饰局部变量问题
 4  * 基本类型:
 5  *         基本类型的值不能改变
 6  * 引用类型:
 7  *         引用类型的地址值不能改变,但是该对象的堆内存地址值可以改变
 8  * @author zhongf
 9  * @date 2015-06-16
10  */
11 class Student {
12
13     int num = 10;
14 }
15
16 public class FinalInterview {
17
18     public static void main(String[] args) {
19
20         //局部变量是基本数据类型
21         int x = 1;
22         x = 2;
23         System.out.println(x);
24
25         final int y = 3;
26 //        y = 4; 报错,无法为最终变量赋值
27         System.out.println(y);
28
29         System.out.println("---------------");
30
31         //局部变量是引用数据类型
32         Student s = new Student();
33         s.num = 20;
34         System.out.println(s.num);
35
36         final Student ss = new Student();
37         ss.num = 30;
38         System.out.println(ss.num);
39
40 //        ss = new Student(); 报错,无法为最终变量赋值
41     }
42 }
43
44 运行结果:
45 2
46 3
47 ---------------
48 20
49 30

时间: 2024-10-12 12:51:30

Java final关键字特点的相关文章

[java]final关键字的几种用法

在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final关键字及其用法. final关键字 在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是"这是不可变的".下面,我们来讲final的四种主要用法. 1.修饰数据 在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量.在java中,用final关键字修饰

[java]final关键字、finally关键字与finalize()方法

final关键字: final关键字通常指的是“无法改变的”,使用“无法改变”这样修饰可能出于两个原因:设计或者效率. final可以修饰变量.方法和类. 一.final变量 一个既是static又是final的域只占据一段不能改变的存储空间. 当对对象引用而不是基本类型运用final修饰时,其含义会有一点迷惑.对于基本类型,final使数值恒定不变.而用于对象引用,final使引用恒定不变.一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象.然而,对象自身却是可以修改的,java并未

Java——final关键字

前言 Java中的关键字final的含义通常为"这是无法改变的".下面将介绍final用于修饰数据.方法和类的这三种情况. final数据 许多编程语言都有某种方法,来向告诉编译器这一块数据是不变的.有时候数据的恒定不变会很有用,比如编译时常量或者一个在运行时被初始化的值而你不希望改变它.对于编译期常量,编译器可以将该常量代入任何可能用到它的计算式中,也就是说,可以在编译时执行计算式,这将减轻运行时的负担.在Java中,常量必须是基本数据类型,以关键字final修饰,并且在定义的时候就

java final 关键字醍醐灌顶

醍醐灌顶: final 关键字,它可以修饰数据 .方法.类. 可能有些同学傻傻分不清出,这里可以快速弄懂final; final 实例域: 可以将实例域定义为final,构建对象时必须初始化这样的域,也就是说,必须确保在每一个构造器执行之后,这个域的值被设置,并且在后面的操作中,不能够在对它进行修改,例如,可以将Employee类中的name域声明为final,因为对象构建之后,这个值不会在被修改.即没有setName方法. class  Employee { private final Str

Java final关键字修饰变量Test

使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的. package com.test; /** * final修饰一个变量练习 * @author Mrjiao * */ public class FinalA { private final static StringBuffer A=new StringBuffer("I have final , Who can change me?"); public static void

四. Java继承和多态8.Java final关键字:阻止继承和多态

在 Java 中,声明类.变量和方法时,可使用关键字 final 来修饰.final 所修饰的数据具有"终态"的特征,表示"最终的"意思.具体规定如下: final 修饰的类不能被继承. final 修饰的方法不能被子类重写. final 修饰的变量(成员变量或局部变量)即成为常量,只能赋值一次. final 修饰的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有 一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用. final 修饰的局部变

10.Java final关键字:阻止继承和多态

在 Java 中,声明类.变量和方法时,可使用关键字 final 来修饰.final 所修饰的数据具有“终态”的特征,表示“最终的”意思.具体规定如下: final 修饰的类不能被继承. final 修饰的方法不能被子类重写. final 修饰的变量(成员变量或局部变量)即成为常量,只能赋值一次. final 修饰的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有 一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用. final 修饰的局部变量可以只声明不赋值,然后再进行

java final关键字

Example5_9.java class A { final double PI=3.1415926;// PI是常量 public double getArea(final double r) { return PI*r*r; } public final void speak() { System.out.println("您好,How's everything here ?"); } } public class Example5_9 { public static void

Java final 关键字 & 参数传递特点

final 1.final 类   表示该类不可继承, 2.final 方法  表示该方法不可被覆盖 3.final 域   表示该字段一被初始化就不能再改变(必须确保在构造器执行之后final域均被设置,且不可改变) final用于基本类型和不可变类型,对象类型不可变的只是引用没有意义 4.final 参数 表示在作用域里只能读取不能赋值该final变量 参数传递 Java传递是"值传递": 1.基础类型+布尔 是把变量copy了一份传给函数,对原变量无影响 2.对象类型 是把改引用