`

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修饰符的使用.pdf

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

    Java基础知识点.html

    Date类 自动拆箱和自动装箱 Arrays 类和接口的关系 内部类 成员内部类 局部内部类 匿名内部类 抽象类 接口 多态 封装 类和对象 方法 StringBuilder类 String类 static for循环 final 权限修饰符 跳转控制语句 while...

    Java面试基础知识.doc

    final 是 Java 语言中的一个修饰符,用于声明类、变量或方法不能被继承或修改。finally 是 Java 语言中的一个专门处理时供给 finally 块来履行任何清除操作。finalize 是 Java 语言中的一个方法名,用于释放对象占用...

    java笔试-选择题.doc

    这些题目涵盖了 Java 的基础知识点,包括面向对象的特征、继承、多态、封装、访问修饰符、final 关键字、Object 类的方法等。 一、面向对象的特征 面向对象的特征包括封装、继承、多态。其中,封装是指将数据和...

    Java面试基础知识.docx

    "Java基础知识点总结" 本文总结了Java面试基础知识的重要概念和技术点,涵盖了异常处理机制、接口和虚类、垃圾回收机制、线程同步、析构函数和虚函数、Error和Exception的区别、final类型的类、编程风格、堆和栈的...

    第5章-JAVA面向对象编程基础.ppt

    JAVA面向对象编程基础 ...本章内容涵盖了 JAVA 面向对象编程的基础知识,包括定义类、创建类的实例对象、构造函数、访问控制修饰符、静态属性和静态方法等,旨在帮助读者掌握 JAVA 面向对象编程的基础知识和技能。

    java基础知识点总结.docx

    "Java基础知识点总结" Java 是一门面向对象的编程语言,它支持面向对象的三大特征:封装、继承和多态。类是 Java 中的基本构成单元,类可以被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的...

    2023年Java面试基础知识.doc

    本文将概括 Java 面试基础知识,涵盖异常解决机制、接口和虚类、垃圾回收机制、线程同步、析构函数和虚函数、Error 和 Exception 的区别、final 类型、编程风格、heap 和 stack 的区别、超大整数的存储和加法运算、...

    2023年java面向对象程序设计基础知识总结.doc

    * 类的修饰符分两种:一是访问修饰符(public、private、protected)、二是非访问修饰符(final、abstract、static 等)。 二、变量和数据类型 * Java 中有四大类基本数据类型:整数(byte、int、short、long)、...

    全网最全Java基础错题整理(持续更新)

    Java 基础知识点总结 Java 是一种广泛使用的编程语言,Java 基础知识点是学习 Java 的必修课。本文将对 Java 基础知识点进行总结,涵盖了 Java 的基本数据类型、方法参数、局部变量、实参和形参等概念。 一、基本...

    java基础笔试题(标准答案已整理).docx

    final 关键字是 Java 中的修饰符,用于修饰类、接口、抽象类、方法和属性。final 关键字可以防止类被继承、方法被重写、变量被修改等。 十二、线程 线程是 Java 中的并发编程机制,用于实现多任务处理。线程可以...

    mooc课程-java-期末考试试卷.docx

    " Java基础知识点" 根据提供的文件信息,我们可以总结出以下 Java 相关知识点: 1. 数据类型: * 合法的标识符:_small、Big、$12ab 等,不能以数字开头。 * Java 语言使用的字符集是 Unicode。 2. 变量和赋值:...

    java计算机二级考试笔记.pdf

    * final 是修饰符,声明类不能被继承,变量或方法不能被改变 * finally 是在异常处理时提供 finally 块来执行任何清除操作 三、杂乱收集 * 算法的时间复杂度:算法在执行过程中所需要的基本运算次数 * 运算符...

    2022年JAVA考试试题及答案.docx

    本文档总结了 2022 年 JAVA 考试试题及答案,涵盖了 JAVA 语言基础知识、面向对象编程、继承、封装、多态、访问修饰符等方面的知识点。 1. 面向对象编程: * 面向对象编程的特征包括封装、继承、多态等。 * 封装是...

    Java期末复习题目 Java期末复习题目 Java期末复习题目

    final修饰符表示成员不能被继承或重写。abstract修饰符表示类或方法是抽象的,不能被实例化。 类与对象关键字 Java中的类与对象关键字包括class、interface、extends、implements等。这些关键字用于定义类和接口,...

    java-打印.docx

    Java 语言基础知识 Java 语言的特点: 1. 面向对象安全性:Java 不支持指针,拥有内部安全措施,确保程序的安全运行。 2. 平台无关性:Java 的编译后的字节码可以在不同的平台上运行,实现跨平台编程。 3. 多线程...

    Java-JDK、数据库系统开发、Web开发学习笔记

    Java-JDK、数据库系统开发、Web开发学习笔记 ...本文档涵盖了Java-JDK的基础知识,包括Object类的方法、异常类的层次结构、Java反射机制、集合类等内容,为Java开发者提供了一个全面了解Java基础知识的机会。

    Java语言基础-面向对象

    Java语言基础-面向对象 Java语言是面向对象的编程语言 对象 对象:是构成系统的最基本的单位 属性:描述对象的静态特征(成员变量) ...[修饰符]可以是:[public公共类][abstract抽象类 | final最终类]默认为friend

    华南农业大学数信java程序设计.doc

    一、Java基础知识 1. Java标识符:合法的自定义标识符可以是fieldname、super,但不能是3number、#number。 2. Java语句结束符:Java语句结束时需要加分号,否则会产生编译错误。 3. Java字符串操作:Java字符串...

    java基础试题及其答案 ().pdf

    Java基础试题及其答案解析 本资源是 Java 基础试题及其答案的集合,涵盖了 Java 的基础知识点,包括 main 方法的格式、Java 代码编译、变量定义、异常处理、集合框架、字符串处理等方面。 1. main 方法的格式正确...

Global site tag (gtag.js) - Google Analytics