📜  Java final关键字

📅  最后修改于: 2020-09-26 13:52:38             🧑  作者: Mango

Java的final关键字

java中的final关键字用于限制用户。java final关键字可以在许多上下文中使用。最终可以是:

  • 变量
  • 方法

final关键字可以与变量一起使用,该变量没有值,称为空白最终变量或未初始化的最终变量。它只能在构造函数中初始化。空白的最终变量也可以是静态的,也只能在静态块中进行初始化。我们将详细了解这些内容。首先让我们学习final关键字的基础知识。

1)Java final变量

如果将任何变量设为final,则不能更改final变量的值(它将是常数)。

final 变量示例

有一个final变量,我们将更改此变量的值,但无法更改,因为一旦分配了值的最终变量就永远无法更改。

class Bike9{  
 final int speedlimit=90;//final variable  
 void run(){  
  speedlimit=400;  
 }  
 public static void main(String args[]){  
 Bike9 obj=new  Bike9();  
 obj.run();  
 }  
}//end of class  

2)Java final 方法

如果将任何方法作为final方法,则无法覆盖它。

final方法示例

class Bike{  
  final void run(){System.out.println("running");}  
}  
     class Honda extends Bike{  
   void run(){System.out.println("running safely with 100kmph");}  
        public static void main(String args[]){  
   Honda honda= new Honda();  
   honda.run();  
   }  
}  

3)Java final class

如果您将任何一class定为final class,则无法扩展它。

final class的例子

final class Bike{}  
  class Honda1 extends Bike{  
  void run(){System.out.println("running safely with 100kmph");}  
      public static void main(String args[]){  
  Honda1 honda= new Honda1();  
  honda.run();  
  }  
}  

问)final方法是否继承?

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

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

问)什么是blank或未初始化的final变量?

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

如果要创建一个在创建对象时已初始化的变量,并且一旦初始化就不能更改,则很有用。例如,员工的PANCARD号。

它只能在构造函数中初始化。

blank final变量的示例

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

e)我们可以初始化blank的最终变量吗?

是的,但仅在构造函数中。例如:

class Bike10{  
  final int speedlimit;//blank final variable  
      Bike10(){  
  speedlimit=70;  
  System.out.println(speedlimit);  
  }  
    public static void main(String args[]){  
    new Bike10();  
 }  
}  

static blank final variable

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

static blank final variable示例

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

问)什么是 final parameter?

如果将任何参数声明为final,则无法更改其值。

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

问)我们可以声明构造函数为final吗?

不,因为构造函数从不继承。