`
liuwei1981
  • 浏览: 770803 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:160942
社区版块
存档分类
最新评论

71.final关键字

 
阅读更多

在Java的类、方法和变量前面,可以加上final关键字。final关键字表示它修饰的类、方法或变量不可被改变。

 

在很多笔试题目中,喜欢拿final关键字来做文章。

 

1 final类

 

 

 

final类不可以被继承,比如java.lang.Math。如果你不希望你的类被继承,可以将类定义为final类,这样,别的类就无法继承它。

 

 


2 final变量


final 变量表示该变量不可以被改变。其实就是常量,因为在Java中不能使用const保留字来定义常量,所以,在需要使用常量的场合,可以使用final关键字来修饰。

 

比如:
 final int CONST_VAR=12;


如果final变量是简单类型的变量,那么,变量的值一旦初始化后,就不能被改变;如果 final变量是引用类型的变量,那么,你不能改变这个变量的引用,但可以改变这个变量所引用的对象的属性。

 

我们来看下面这个例子:

class Aclass {
 private int a;

 // 构造器
 public Aclass() {
  a = 100;
 }

 public void setA(int theA) {
  a = theA;
 }

 public int getA() {
  return a;
 }
}

 

// 定义一个类来测试final应用变量
public class TestFinal {
 final Aclass aClass = new Aclass();

 public static void main(String[] args) {
  TestFinal tf = new TestFinal();
  tf.aClass.setA(1);
  System.out.println(tf.aClass.getA());
 }
}


在这个例子中,我们定义了一个类Aclass,这个类有一个实例变量a,并且有相应的存取方法来对它进行存取。然后,在类TestFinal中,我们定义了一个final的应用类型的变量aClass,这个变量的引用是不能被改变的,但是,我们可以将这个引用变量指向的对象的属性进行修改,在这边,我们通过调用实例的setA方法来修改它的实例变量a,这样,这个时候这个静态引用变量指向的对象的属性值被修改成了1。


在编程实践中,我们还经常用静态常量,也就是同时用static 和final来修饰的“变量”,例如,在前面我们频繁使用的用于向标准设备输出信息的语句:
System.out.println(…);


在这里,System.out的关系是:out是System类的一个静态常量,所以可以不需要实例化System就可以直接通过“类名.属性”的方式来访问它。

提示:
  根据Java命名规范,如果在编译的时候,就可以确定final变量的值,那么,此常量的名字应该都大写,并且指出完整含义,如果需要用几个单词描述,那么单词之间用“_”来分割,如:static final int MAX_TAX_RATE = 20;
  

相反的,在下面情况下可以不使用上面的命名规则: final变量无法在编译的时候就获得值,而必须在执行的时候才能得到值,比如,我们在示例7-4中的final变量aClass就是一个例子:final Aclass aClass = new Aclass();在编译的时候,程序不会执行new动作来实例化一个Aclass,并赋值给aClass,所以,就没有使用上面的命名规则来给final变量命名。


3 final方法

 

 

 

final方法表示这个方法不可以在子类中覆盖。比如,下面的例子中,类B编译不会通过,因为它试图覆盖赋类中的一个final方法:
父类:
 public class A{
  public final void methodA(){ … …}
  //… …
 }

 

 


子类:
 public class B extends A {
  //此处报错,因为它试图覆盖父类中的静态方法
  public void methodA()
  { … … }
 }


如果将父类A中的methodA()改成private的,如下:
父类:
 public class A {
  private final void methodA()
  { … …}
  … …
 }


子类:
 public class B extends A {
  //此处不报错,因为它只是定义了一个methodA()
  public void methodA()
  { … …}
 }


注意类A中的methodA(),它的访问修饰符为private,此时,在子类B中是访问不了父类A的methodA()方法的,因此,在类B中的methodA()只是新定义的一个方法而不是覆盖父类的方法。所以,此时编译这个程序将不会报错。

 

分享到:
评论

相关推荐

    22.final关键字.zip

    22.final关键字.zip22.final关键字.zip22.final关键字.zip22.final关键字.zip22.final关键字.zip22.final关键字.zip22.final关键字.zip22.final关键字.zip22.final关键字.zip22.final关键字.zip22.final关键字.zip22...

    Java基础精品课12-抽象类录屏7.final关键字.mp4

    Java基础精品课12-抽象类录屏7.final关键字.mp4

    【IT十八掌徐培成】Java基础第02天-01.java关键字.zip

    3. 类与对象关键字:`public`, `private`, `protected`, `static`, `final`, `abstract`, `void`, `this`, `super`, `new`, `instanceof`。它们用于定义类的访问权限、修饰成员变量和方法、创建对象、进行类型检查等...

    Java编程中static和final关键字的陷阱.pdf

    Java编程中static和final关键字的陷阱.pdf Java编程中static和final关键字的陷阱是Java开发中两个重要的关键字,但是它们的使用也存在一些陷阱,需要开发者注意掌握。 static关键字可以用于修饰属性、方法和类。...

    final关键字的使用.mp4

    final关键字的使用f

    Java中final关键字详解

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。 主要介绍:一.final关键字的基本...

    final关键字详细解读

    final关键字是Java语言中的一个基本概念,它用于限制类、变量、方法以及引用的修改和扩展。final关键字的主要作用是告诉编译器该元素是最终的,不可变的。对于初学者来说,掌握final关键字的使用可以帮助编写出更加...

    Java final关键字

    在Java编程语言中,`final`关键字扮演着一个至关重要的角色,它被用来声明一个变量、方法或类为不可变的。在这个学习demo中,我们将深入理解`final`关键字的各种用法及其背后的原理。 首先,`final`关键字用于变量...

    Java零基础-final关键字.md

    ### Java零基础-final关键字 #### 内容概要 本文主要介绍了Java中final关键字的概念及其在实际编程中的应用。读者将能够理解final关键字的基本定义、用途及作用范围,并且掌握如何在不同的编程场景中合理使用它。...

    深入理解Java中的final关键字_动力节点Java学院整理

    Java 中的 `final` 关键字是一个至关重要的概念,它被用来声明类、方法和变量,以确保它们在程序执行过程中不可更改。深入理解 `final` 关键字可以帮助开发者写出更加安全、高效的代码。 首先,`final` 关键字可以...

    final 关键字用法

    java程序设计中,final 关键字用法,通过代码演示java程序设计中,final 关键字用法,

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    1. **final关键字** - `final`关键字用于确保变量的值一旦被赋值后就不能改变,或者类和方法不能被进一步扩展。 - 当`final`修饰类时,该类不能被继承,如`final class MyClass {}`,这意味着MyClass不能作为其他...

    day11 05 final关键字用于修饰成员变量

    day11_05_final关键字用于修饰成员变量

    final关键字思维导图.xmind

    final关键字

    Java中的final关键字详解及实例

    Java中的final关键字 1、修饰类的成员变量 这是final的主要用途之一,和C/C++的const,即该成员被修饰为常量,意味着不可修改。   上面的代码对age进行初始化后就不可再次赋值,否则编译时会报类似上图的错误。 ...

    day11【final、权限、内部类】1

    Java 中的 final 关键字、权限修饰符和内部类 final 关键字是 Java 中的一个重要概念,它用于修饰类、方法和变量,以确保它们不可被改变。下面我们将详细介绍 final 关键字的概念、使用方式和特点。 final 关键字...

    【Java语言基础】final关键字

    【Java语言基础】final关键字 修饰词:final 最终的最后的 final关键字可用于修饰符,变量和方法,用于表示它修饰的类,方法和方法不可改变。 final 最终的最后的 final修饰变量时,表示该变量一旦获得了初始值之后...

    netty-resolver-4.1.53.Final.jar中文-英文对照文档.zip

    # 本文件关键字: 中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,...

Global site tag (gtag.js) - Google Analytics