final关键字的使用

一、知识清单

1、final可以用来修饰的结构: 类 ( 包 括 内 部 类 ) 、 方 法 、 变 量 \color{HotPink}{类(包括内部类)、方法、变量}

2、final用来修饰一个类(俗称太监类): 此 类 不 能 被 其 他 类 继 承 \color{HotPink}{此类不能被其他类继承} 比如:String类、System类、StringBuffer类
3、final用来修饰一个方法: 表 明 此 方 法 不 可 以 被 重 写 \color{HotPink}{表明此方法不可以被重写} 比如:Object类中的getClass();
4、final用来修饰变量: 此 时 的 变 量 称 为 是 一 个 常 量 \color{HotPink}{此时的变量称为是一个常量} 一旦被分配内存空间就必须初始化并且以后不可变。

  1. final修饰属性
  • 可以考虑赋值的位置有:显示初始化、代码块中初始化、构造器中初始化(每个构造器中都应该对其进行初始化,因为你不知道调用哪个构造器,如果有一个构造器你没初始化被调用了,那么这个常量就是没赋值)
  • final也不能通过set/get或者其它方法进行赋值,因为当类被加载进内存的时候,这个属性并没有给其分配内存空间,而只是定义了一个变量,只有当类被实例化的时候这个属性才被分配内存空间,而实例化的时候同时执行了构造函数,所以属性被初始化了,也就符合了当它被分配内存空间的时候就需要初始化,以后不再改变的条件。通过set/get只能修改变量的值。
  • final修饰的变量不能执行默认初始化,即final int val;错误
  1. final修饰局部变量
  • 尤其是使用final修饰形参时,表名此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值以后,就只能在方法体中使用此形参,但不能重新赋值。

5、
static可以修饰:属性、方法、代码块、内部类
final可以修饰:属性、方法、类(包括内部类)
static final 修饰(两者共同的部分):修饰属性、方法、内部类
static fianl 用来修饰属性:称为全局常量

二、代码演示

public class FinalTest {
	
	final int WIDTH=0;
	final int LEFT;
	final int RIGHT;
//	final int DOWN;
	//代码块进行初始化
	{
		LEFT=1;
	}
	
	//构造器进行初始化(每个构造器中都要写)
	public FinalTest(){
		RIGHT=2;
	}
	
	public FinalTest(int n){
		RIGHT=2;
	}
	
	//set/get方法中不可以赋值
//	public void setDown(int down){
//		this.DOWN=down;
//	}
	
	public void show(){
		final int NUM=10;//常量
//		NUM+=20;
	}
	
	public void show(final int num){
//		num=20;//编译不通过
		System.out.println(num);
	}
	
	
	public static void main(String[] args) {
		
		int num=10;
		num+=5;
		FinalTest test=new FinalTest();
//		test.setDown(3);
		
		test.show(10);
	}
	
	//final可以修饰内部类
	final class Dabao{
		
	}
	//static可以修饰内部类
	static class Biu{
		
	}
}

	//final修饰的类不可以被继承
//final class FinalA{
//	
//}
//class B extends FinalA{
//	
//}

class AA{
	public final void show(){
		
	}
}

//final修饰的方法不可以被重写
//class BB extends AA{
//	//Cannot override the final method from AA
//	public final void show(){
//		
//	}
//}

三、面试题

final关键字的面试题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值