`

JAVA基础知识(二)------final修饰符

阅读更多

final具有“不可改变的”含义,它可以修饰非抽象类、非抽象成员方法和变量。

  •  用final修饰的类不能被继承,没有子类。
  •  用final修饰的方法不能被子类方法覆盖。
  • 用final修饰的变量表示常量,只能被赋值一次。

1、final类

    在以下情况下,可以考虑把类定义成final类型,使得这个类不能被继承:

  •  不是专门为继承而设计的类,类本身的方法之间有复杂的调用关系。假如随意创建这些类的子类,子类有可能错误地修改父类的实现细节。
  •  出于安全的原因,类的实现细节不允许有任何改动。
  • 在创建对象模型时,确定这个类不会再被护。

2、final方法

    在某些情况下,出于安全的原因,父类不允许子类覆盖某个方法,此时可以把这个方法声明为final类型

3、final变量

    final变量具有以下特征:

    (1)final修饰符可以修饰静态变量、实例变量、局部变量分别表示静态常量、实例常量、局部常量。

    (2)被final修饰的成员变量必须显式初始化,否则会导致编译错误。如:

          

public class Sample {
  final int va1;                       //编译出错,va1实例常量必须被显式初始化
 final static int val2;             //编译出错,val2静态常量必须被显式初始化
 
 int val3;                              //合法,被初始化默认值0
  static int val4;                    //合法,被初始化默认值0
}

    对于final类型的实例变量,可以在定义变量或在构造方法中进行初始化;对于final类型的静态变量,可以在定义变量时进行初始化,也可以在静态代码块中进行初始化。例如:

        

public class Sample {
  final int a = 1;                       //合法
  final int b;
  static final int c = 3;              //合法
  static final int d;
	
  static{
    d = 4; //合法
 }
  public Sample() {
    b = 2; //合法
  }
}

 

   (3)final变量只能赋值一次。例如:

         

public class Sample {
  private final int var1 = 1;           //定义并初始化var1实例变量  
  public Sample() {
    var1 = 2;                                 //编译出错,不允许改变val1实例变量的值
 }

  public void method(fina int param) {
     final int var2 = 1;                   //定义并初始化var2局部变量
   var2++;                                //编译出错,不允许改变var2局部变量的值
   param++;                             //编译出错,不允许改变final类型参数的值
 }
}

   (4)如果引用类型的变量用final修饰,那么该变量只能始终引用一个对象,但可以改变对象的内容。例如:

         

public class Sample {
  public int var;
  public Sampe(int var){this.var = var;}

  public static void main(String args[]) {
    final Sample s = new Sample(1);  //合法,定义并初始化final类型的引用变量s
    s.var = 2;             //合法,修改引用变量s所引用的Sample的对象var属性
   
   s = new Sample(2);                     //编译错误,不能改变引用变量s所引用的Sample对象
  }
}

 

分享到:
评论

相关推荐

    java基础知识学习-个人笔记

    Java是一种广泛使用的面向对象的编程语言,其基础知识是学习Java编程的基石。下面将详细解释标题和描述中涉及的关键...以上就是Java基础知识的一些核心概念和特性,理解并掌握这些知识点对于深入学习Java编程至关重要。

    Java软件开发实战 Java基础与案例开发详解 6-4 访问修饰符 共5页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 3-10 java基础知识章节练习 共4页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    【IT十八掌徐培成】Java基础第05天-03.抽象类-抽象方法-修饰符组合.zip

    今天我们将深入探讨这个主题,特别是在Java基础课程的第五天,讲师徐培成讲解的"抽象类-抽象方法-修饰符组合"部分。下面将详细阐述相关知识点。 首先,我们来了解什么是抽象类。在Java中,抽象类是一种不能被实例化...

    java总结大全--包括所有java基础知识点.pdf

    在提供的文件内容中,主要涉及了几个关键的Java基础知识点,包括数值类型的表示、字符串处理、引用传递、方法重载、内部类以及接口的概念。 1. **数值类型的表示**: - Java中的整型(如`int`)进行除法运算时,会...

    SCJP java基础修饰符

    Java提供了10种基本修饰符,它们分别是`public`、`protected`、`private`、`final`、`abstract`、`static`、`native`、`transient`、`synchronized`和`volatile`。这些修饰符的应用范围和功能各不相同,下面将逐一...

    java私塾面试题----JAVA基础1.rar

    这个压缩包文件包含了针对Java初学者和求职者的一系列面试题目,主要涵盖了Java基础知识。这些题目旨在检验和提升候选人在Java编程语言的理解、基本概念、语法和常见问题解决能力。下面将详细讨论其中可能涵盖的知识...

    Java软件开发实战 Java基础与案例开发详解 2-7 java上机练习 共5页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 9-5 java程序国际化的实现 共9页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    java修饰符的使用.pdf

    Java 中的类和方法的修饰符是 Java 语言的基础知识之一。Java 程序在定义类时,除了使用 class 关键字标识之外,还可以在 class 之前增加若干类的修饰符来修饰限定所定义的类的特性。类的修饰符分为访问控制符和非...

    Java软件开发实战 Java基础与案例开发详解 11-8 练习题 共5页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 18-6 练习题 共5页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 17-6 练习题 共4页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 17-3 代码实现 共19页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 13-12 练习题 共5页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 4-6 数组和排序算法章节练习 共4页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java软件开发实战 Java基础与案例开发详解 20-2 网络版JQ 共10页.pdf

    3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 ...

    Java修饰符demo

    本文将深入探讨Java修饰符的基础知识,包括访问修饰符、非访问修饰符以及它们在实际编程中的应用。 首先,我们来看访问修饰符。在Java中,有四种主要的访问修饰符: 1. **public**:公共访问修饰符,允许任何地方...

    JAVA程序员必读--基础篇

    Java编程语言是软件开发领域的重要组成部分,尤其对于初学者来说,掌握Java基础知识是成为合格的程序员的第一步。"JAVA程序员必读--基础篇"这个资料包显然是为了帮助那些想要深入理解Java的人准备的,它涵盖了Java...

    CoreJava考试试题---达内科技.pdf

    final修饰符 - **知识点:** - `final`修饰符用于声明变量、方法或类不可更改。当应用于变量时,一旦赋值就不能再修改;应用于方法时,该方法不能在子类中被重写;应用于类时,该类不能被继承。 ### 7. 异常处理...

Global site tag (gtag.js) - Google Analytics