zoukankan      html  css  js  c++  java
  • java Final关键字

    ava中的final关键字用于限制用户修改变量或重写一个类或方法。 java final关键字可以在许多上下文中使用。 final可以是:

    1. 变量
    2. 方法

    final关键字可以应用于变量,没有值的final变量称为空白变量或未初始化的最终变量。 它只能在构造函数中初始化。 空白最终变量也可以是静态的,它将仅在静态块中初始化。 在之后的文章中我们将详细学习这些。 下面先学习final关键字的基础知识。

    1. Java final变量

    如果将变量设置为final,则不能更改final变量的值(它将是常量)。final关键字应用有以下几点需要注意:

    1. 禁止变量的值被改变;
    2. 禁止方法重写;
    3. 禁止类继承;

    final变量的示例

    要改变final变量的值,这是不可能的,因为一个final变量一次分配一个值永远不能更改。如下试图修改 speedlimit 变量的值为 400,这是不允许的。

    class Bike9 {
        final int speedlimit = 90;// final variable
    
        void run() {
            speedlimit = 400; // 不可以修改 final 变量的值
        }
    
        public static void main(String args[]) {
            Bike9 obj = new Bike9();
            obj.run();
        }
    }// end of class
    
    Java

    上面代码执行后生成以下结果 -

    [编译错误]Compile Time Error
    
    Java

    2. Java final方法

    如果任何方法声明为final,则不能覆盖它。

    final方法的示例,下面方法是不能覆盖的 -

    class Bike {
        final void run() {
            System.out.println("running");
        }
    }
    
    class Honda extends Bike {
        void run() { // final方法,不可以重写
            System.out.println("running safely with 100kmph");
        }
    
        public static void main(String args[]) {
            Honda honda = new Honda();
            honda.run();
        }
    }
    
    Java

    上面代码执行后生成以下结果 -

    [编译错误]Compile Time Error
    
    Java

    3. Java final类

    如果把任何一个类声明为final,则不能扩展它。final类的示例

    final class Bike {
    }
    
    class Honda1 extends Bike { // 不可以扩展 final 类
        void run() {
            System.out.println("running safely with 100kmph");
        }
    
        public static void main(String args[]) {
            Honda1 honda = new Honda();
            honda.run();
        }
    }
    
    Java

    上面代码执行后生成以下结果 -

    [编译错误]Compile Time Error
    
    Java

    问题:是否可继承final方法?

    答: 是的,final方法是继承的,但是不能覆盖它。 例如:

    class Bike {
        final void run() {
            System.out.println("running...");
        }
    }
    
    class Honda2 extends Bike {
        public static void main(String args[]) {
            new Honda2().run();
        }
    }
    
    Java

    上面代码执行后生成以下结果 -

    Output:running...
    
    Java

    问题:什么是空白或未初始化的final变量?

    在声明时未初始化的final变量称为空白final变量。

    如果要在创建一个对象时初始化变量,并且变量在初始化后就不会被改变, 这是非常有用的。 例如员工的PAN CARD号码。它只能在构造函数中初始化。

    空白final变量的示例

    class Student{  
        int id;  
        String name;  
        final String PAN_CARD_NUMBER;  
        ...  
    }
    
    Java

    问题:可以初始化空白的final变量吗?

    答: 是的,但只能在构造函数中。 例如:

    class Bike10 {
        final int speedlimit;// blank final variable
    
        Bike10() { // 在构造函数中初始化
            speedlimit = 70;
            System.out.println(speedlimit);
        }
    
        public static void main(String args[]) {
            new Bike10();
        }
    }
    
    Java

    上面代码执行后生成以下结果 -

    70
    
    Java

    静态空白final变量

    在声明时未初始化的静态final变量称为静态空白final变量。 它只能在静态块中初始化。

    静态空白final变量的示例

    class A {
        static final int data;// static blank final variable
        static {
            data = 50;
        }
    
        public static void main(String args[]) {
            System.out.println(A.data);
        }
    }
    
    Java

    问题:什么是final参数?

    如果将任何参数声明为final,则不能更改它的值。

    class Bike11 {
    
        int cube(final int n) {
            n = n + 2;// can't be changed as n is final
            // n*n*n; // 不能修改 n 的值
            return n;
        }
    
        public static void main(String args[]) {
            Bike11 b = new Bike11();
            b.cube(5);
        }
    }
    
    Java

    上面代码执行后生成以下结果 -

    [编译错误]Compile Time Error
    
  • 相关阅读:
    [ css 计数器 counter ] css中counter计数器实例演示三
    [ css 计数器 counter ] css中counter计数器实例演示二
    Leetcode 15. 三数之和
    Leetcode 13. 罗马数字转整数
    Leetcode 19. 删除链表的倒数第 N 个结点
    Leetcode 12. 整数转罗马数字
    Leetcode 11. 盛最多水的容器 双指针
    剑指 Offer 68
    剑指 Offer 68
    面试题 04.02. 最小高度树
  • 原文地址:https://www.cnblogs.com/yumo1627129/p/7170750.html
Copyright © 2011-2022 走看看