Java final关键字
java中的
final关键字用于限制用户。 java final关键字可以在许多上下文中使用。最终可以是:
变量
方法
类
final关键字可以与变量一起使用,该变量没有值,称为空白final变量或未初始化的final变量。它只能在构造函数中初始化。空白的final变量也可以是静态的,也只能在静态块中进行初始化。我们将详细了解这些内容。首先让我们学习final关键字的基础知识。
1)Java final变量
如果将任何变量设置为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
Output:Compile Time Error
2)Java 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();
}
}
Output:Compile Time Error
3)Java final类
如果将任何类都设置为final,则不能扩展它。
最后一堂课的例子
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();
}
}
Output:Compile Time Error
Q)是否继承了final方法?
Ans)是,final方法是继承的,但您不能覆盖它。例如:
class Bike{
final void run(){
System.out.println("running...");
}
}
class Honda2 extends Bike{
public static void main(String args[]){
new Honda2().run();
}
}
Q)什么是空白或未初始化的final变量?
当时尚未初始化的final变量声明的末尾称为空白final变量。
如果要创建在创建对象时初始化的变量,并且一旦初始化就不能更改,则很有用。例如,员工的PAN CARD号。
只能在构造函数中初始化。
空白的final变量示例
class Student{
int id;
String name;
final String PAN_CARD_NUMBER;
...}
Que)我们可以初始化空白的final变量吗?
是的,但只能在构造函数中。例如:
class Bike10{
final int speedlimit;
//blank final variable Bike10(){
speedlimit=70;
System.out.println(speedlimit);
}
public static void main(String args[]){
new Bike10();
}
}
静态空白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);
}
}
Q)什么是final参数?
如果将任何参数声明为final,则无法更改该值
class Bike11{
int cube(final int n){
n=n+2;
//cant be changed as n is final n*n*n;
}
public static void main(String args[]){
Bike11 b=new Bike11();
b.cube(5);
}
}
Output: Compile Time Error
Q)我们可以将构造函数声明为final吗?
否,因为构造函数永远不会被继承。