首页 > 编程语言 >Java面试:final关键字有什么特点?

Java面试:final关键字有什么特点?

时间:2024-06-13 18:29:09浏览次数:24  
标签:Java 错误 编译 class public 关键字 final 赋值

final关键字在Java中有多种用途和特点,它可以用在类、方法和变量的声明中。以下是final关键字在不同上下文中的特点和用途:

1. final

特点

  • 当一个类被声明为final时,这个类不能被继承。
  • 不能创建这个类的子类,任何试图继承这个类的行为都会导致编译错误。

示例

public final class FinalClass {
    // class body
}

// 下面的类定义会导致编译错误
public class SubClass extends FinalClass {
    // 编译错误: Cannot inherit from final 'FinalClass'
}

用途

  • 通常用于设计不可变类,例如String类。
  • 可以防止类被不安全或无意中修改,增加安全性。

2. final 方法

特点

  • 当一个方法被声明为final时,这个方法不能被重写(覆盖)。
  • 子类不能修改这个方法的实现。

示例

class SuperClass {
    public final void display() {
        System.out.println("This is a final method.");
    }
}

class SubClass extends SuperClass {
    // 下面的方法定义会导致编译错误
    public void display() {
        // 编译错误: Cannot override the final method from SuperClass
    }
}

用途

  • 防止关键方法被子类修改,确保行为的一致性。
  • 增加安全性和稳定性,特别是在框架和库的设计中。

3. final 变量

特点

  • 当一个变量被声明为final时,这个变量只能被赋值一次,赋值后值不能被改变。
  • final变量可以在声明时赋值,也可以在构造函数中赋值,但赋值后不能再改变。

示例

public class FinalVariableExample {
    public final int CONSTANT_VALUE = 10;
    
    public final int anotherValue;
    
    public FinalVariableExample(int value) {
        anotherValue = value; // 可以在构造函数中赋值
    }

    public void changeValue() {
        // 下面的赋值操作会导致编译错误
        // CONSTANT_VALUE = 20; // 编译错误: Cannot assign a value to final variable 'CONSTANT_VALUE'
        // anotherValue = 30; // 编译错误: Cannot assign a value to final variable 'anotherValue'
    }
}

用途

  • 用于定义常量,例如public static final int MAX_VALUE = 100;
  • 保持变量值不可变,增强程序的可读性和安全性。

4. final 参数

特点

  • 当一个方法参数被声明为final时,该参数在方法体内不能被修改。

示例

public void doSomething(final int parameter) {
    // 下面的赋值操作会导致编译错误
    // parameter = 10; // 编译错误: Cannot assign a value to final variable 'parameter'
}

用途

  • 防止方法参数在方法内部被修改,增加代码的稳定性和可读性。

总结

final关键字在Java中用于类、方法、变量和方法参数,可以防止继承、重写和重新赋值,从而增加程序的安全性、稳定性和可维护性。理解并善用final关键字是编写高质量Java代码的关键。

标签:Java,错误,编译,class,public,关键字,final,赋值
From: https://blog.csdn.net/qq_42631788/article/details/139651482

相关文章

  • Java 17 新增的语法特性
    Java17新增的语法特性目录Java17新增的语法特性JEP与ProjectAmber引言1.Records[JEP395]2.switch表达式与yield[JEP361]3.用于instanceof的模式匹配[JEP394]4.文本块[JEP378]5.密封类[JEP409]Java17的其他主要改进稳定版的ZGC垃圾回收器主流Java开发框架支持更......
  • Java 21新增的语法特性
    Java21新增的语法特性目录Java21新增的语法特性引言record模式[JEP440]用于switch的模式匹配[JEP441]序列集合[JEP431]虚拟线程[JEP444]Java21的其他改进说明1:本文大量参考了JEP文档与Oracle官方文档,部分文字直接引自这两个文档并进行了适当的修改。说明2:本文代码详......
  • Spring Junit 测试报错 java.lang.IllegalStateException
    写测试代码的时候出现了java.lang.IllegalStateException:CouldnotloadTestContextBootstrapper[null].Specify@BootstrapWith's'value'attributeormakethedefaultbootstrapperclassavailable.代码如下:packagecom.example.service;importcom.example.c......
  • Java优雅统计耗时【工具类】
    任务耗时如何优雅的打印,看完本文你就明白了!~importcn.hutool.core.date.StopWatch;importcn.hutool.core.lang.Console;/***优雅打印出任务耗时*/publicclassMain{publicstaticvoidmain(String[]args)throwsException{StopWatchstopWat......
  • JAVA面向对象练习题2
    题目要求:        定义一个Student实体类,成员变量:name、age。静态成员变量:在线人数。在测试类中:创建集合,存储学生对象,每创建一个学生对象,在线人数+1,删除一个学生对象,在线人数-1定义方法完成:请给集合中存储3个学生对象,并遍历集合,并输出在线人数。定义方法完成:请判断......
  • public、private、protected、package、final
    public关键字用于将类、方法或变量声明为公共的,意味着它们可以被所有类访问。无限制,全局可见。private关键字用于将类、方法或变量声明为私有的,意味着它们只能在声明它们的类内部访问。仅限于同一类。java支持嵌套类,如果一个类内部还定义了嵌套类,那么,嵌套类拥有访问private的权......
  • 一起来学javascript-axios
       <!--//AJAX的封装插件——Axios。  //什么是Axios  //Axios是一个基于Promise的HTTP库,可以用于浏览器和Node.js,支持VanillaJS、Angular、React、Vue等框架。  //简单的理解就是对Ajax的封装,且具有易用、简洁、高效等特点。  ......
  • 使用 JavaScript 中的 DeviceOrientationEvent
    在前端开发中,DeviceOrientationEvent是一个非常有用的API,它允许我们访问设备的物理方向信息,如设备的倾斜和旋转。这个API可以在移动设备上获取设备的方向,可以用来创建各种有趣和交互性强的应用程序,比如游戏、增强现实体验等。本文将介绍如何使用DeviceOrientationEventAP......
  • java学习笔记(八):多态、包、权限修饰符、修饰方法、final
    目录一、多态1.1多态的形式1.2多态的使用场景1.3多态的定义和前提1.4多态的运行特点1.5多态的弊端1.6引用类型转换1.7综合练习二、包2.1包名的命名规范:2.2导包2.3使用不同包下的相同类怎么办?三、权限修饰符3.1权限修饰符3.2不同权限的访问能力四、......
  • JavaScript-DOM
    DOM全称:DOM(DocumentObjectModel--文档对象类型) 作用:用来操控网页类容的功能,开发网页特效和实现用户交互DOM结构将HTML文档以树形结构表现出来称之为DOM树获取DOM 语法:document.querySelector('css选择器')参数:包含一个或多个css选择器字符串返回值:CSS选......