Java 最终修改

原文:https://www.studytonight.com/java/final-in-java.php

Final 修饰符用于将字段声明为 final。它可以与变量、方法或类一起使用。

如果我们将一个变量声明为最终的,那么它会阻止内容修改。变量的作用就像一个常数。最终字段在声明时必须初始化

如果我们宣布一个方法为最终,那么它将防止覆盖

如果我们宣布一个类为最终,那么它将阻止继承。我们不能继承 Java 中的最终类

示例:最终变量

在这个例子中,我们声明了一个最终变量,并在稍后尝试修改它的值。但是最终变量不能被重新分配,所以我们得到编译时错误。

     public class Test {

    final int a = 10;
    public static void main(String[] args) {
        Test test = new Test();
        test.a = 15; // compile error
        System.out.println("a = "+test.a);
    }
}

错误:无法分配最终的现场测试

最终方法

使用 final 关键字声明的方法称为 final 方法。当我们想要防止方法被覆盖时,它很有用。

示例:最终方法

在这个例子中,我们创建了一个 final 方法 learn(),并试图覆盖它,但是由于 final 关键字,编译器报告了一个错误。

     class StudyTonight
{
  final void learn()
  {
    System.out.println("learning something new");
  }
}

// concept of Inheritance
class Student extends StudyTonight
{
  void learn()
  {
    System.out.println("learning something interesting");
  }

  public static void main(String args[]) {
    Student object= new Student();
    object.learn();
  }
}

无法覆盖今晚学习的最终方法

这将产生编译时错误,因为该方法被声明为 final,因此不能被覆盖。不要被扩展的关键字所迷惑,我们将在接下来的继承教程中了解到这一点。

让我们再举一个例子,我们也有一个最终变量和方法。

     class Cloth
{
  final int MAX_PRICE = 999;    //final variable
  final int MIN_PRICE = 699;
  final void display()      //final method
  {
    System.out.println("Maxprice is" + MAX_PRICE );
    System.out.println("Minprice is" + MIN_PRICE);
  }
}

在上面的类中,最大价格和最小价格变量是最终的,因此一旦声明,这些值就不能更改。同样,方法 display()是最终的,这意味着即使某个其他类继承了 Cloth 类,该方法的定义也不能更改。

期末班

一个类也可以被声明为最终类。声明为 final 的类不能被继承。 java.lang 包中的 String 类是最终类的一个例子。

我们可以创建自己的最终类,这样其他类就不能继承它。

示例:期末课堂

在这个例子中,我们创建了最后一个类 ABC,并试图从演示类扩展它。但是由于限制,编译器报告了一个错误。见下面的例子。

     final class ABC{

    int a = 10;
    void show() {
        System.out.println("a = "+a);
    }

}

public class Demo extends ABC{

    public static void main(String[] args) {

        Demo demo = new Demo();

    }
}

演示类型不能将最终的作业成本分类

Java 空白最终变量

申报时未初始化的最终变量称为空白最终变量。Java 允许在没有初始化的情况下声明一个最终变量,但是它应该只由构造器初始化。这意味着我们只能在构造器中为空的最终变量设置值。

示例:

在这个例子中,我们创建了一个空白的最终变量,并在一个可接受的构造器中初始化它。

     public class Demo{
    // blank final variable
    final int a;

    Demo(){
        // initialized blank final
        a = 10;
    }

public static void main(String[] args) {

    Demo demo = new Demo();
    System.out.println("a = "+demo.a);

    }
}

a=10

静态空白最终变量

使用 static 关键字声明的空白最终变量称为静态空白最终变量。它只能在静态块中初始化。

静态空白最终变量用于为类创建静态常量。

例子

在这个例子中,我们正在创建静态空白最终变量,该变量在静态块中初始化。我们使用类名来访问那个变量,因为要访问静态变量,我们不需要创建那个类的对象。

     public class Demo{
    // static blank final variable
    static final int a;

    static{
        // initialized static blank final
        a = 10;
    }

public static void main(String[] args) {

    System.out.println("a = "+Demo.a);

    }
}

a=10