JavaSE基础知识——final关键字


目录
  • 1. 什么是 final 关键字?
  • 2. final 关键字的使用规则
  • 3. 参考示例代码


1. 什么是 final 关键字?

  • final:最终的

2. final 关键字的使用规则

  1. final可以用来修饰的结构:类、方法、变量

  2. final 用来修饰一个类: 此类不能被其他类所继承。
    比如:String类、System类、StringBuffer类

  3. final 用来修饰方法:表明此方法不可以被重写
    比如:Object类中getClass();

  4. final 用来修饰变量:此时的"变量"就称为是一个常量

  • final修饰属性: 可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化
  • final修饰局部变量:
    尤其是使用final修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值 以后,就只能在方法体内使用此形参,但不能进行重新赋值。
  • static final 用来修饰属性:全局常量

3. 参考示例代码

public class FinalTest {
	
	final int WIDTH = 0;   //final修饰属性,显式初始化赋值
	final int LEFT;
	final int RIGHT;
//	final int DOWN;
	
	{   //使用代码块对final修饰的变量进行赋值
		LEFT = 1;
	}
	
	public FinalTest(){  //在构造器中对final修饰的属性进行赋值
		RIGHT = 2;
	}
	
	public FinalTest(int n){
		RIGHT = n;
	}
	
//	public void setDown(int down){
//		this.DOWN = down;   // 方法中不能对final关键字修饰的变量进行赋值,原因为final关键字出生时已被构造器给赋值了
//	}
	
	
	public void doWidth(){
//		width = 20;
	}
	
	
	public void show(){
		final int NUM = 10;//常量
//		NUM += 20;//声明为常量之后就不能再进行赋值操作
	}
	
	public void show(final int num){
//		num = 20;//编译不通过
//使用final修饰形参后,在方法内部只能进行调用,不能进行修改
		System.out.println(num);
	}
	
	
	public static void main(String[] args) {
		
		int num = 10;
		
		num = num + 5;
		
		FinalTest test = new FinalTest();
//		test.setDown(3);
		
		test.show(10);
	}
}


final class FinalA{   //final修饰类:此类不能被其他类所继承
	
}

//class B extends FinalA{  //错误写法
//	
//}

//class C extends String{//String被声明为final类
//	
//}

class AA{
	public final void show(){  // final修饰方法,子类无法重写该方法
		
	}
}

class BB extends AA{
	
//	public void show(){  //父类中show()方法已被final关键字修饰,无法进行重写
//		
//	}
}