final关键字

final关键字可以用来修饰数据、方法和类,意为“不可改变的”
1.final数据
(1)final常量
在java中,编译期常量(数值恒定不变)必须是基本数据类型,且用final表示,在定义时必须对其初始化。
当对象引用用final表示时,一旦引用被初始化指向某一个对象,就无法再改而指向另一个对象,但对象中的内容是可以被修改的。
数组也是对象,因此上述原则同样适用。
一段同时被static和final修饰的域,仅占据一段不能改变的数据空间。
对常量的常用定义形式:
public static final int VALUE_ONE = 10;
(2)空白final
定义数据时声明为final但不对其进行初始化,改而在构造器中对其进行初始化。可以用于针对不同对象final域有所不同,但又恒定不变。

class Poppet{
	private final int i;
	Poppet(int i){
		this.i = i;
		System.out.println(" "+this.i);
	}
}
public class BlankFinal {
	private final int j;
	private Poppet p;
	BlankFinal(int x){
		j = x;
		p = new Poppet(x);
	}
	public static void main(String[] args) {
		new BlankFinal(5);
		new BlankFinal(10);
	}
}

(3)final参数
方法传入的对象引用类型指明为final时,意味着在方法中无法改变引用所指向的对象;当基本类型被指明为final时,只能读取该参数,但不能改变其值。
2.final方法
将方法定义为final,一般是为了防止继承类对它进行修改覆盖。
类中的所有private方法实际上都被隐式地指定为final,因为private方法对外是不可见的,即使继承类都无法调用父类的private方法。
即便继承类试图“覆盖”父类的private方法,编译也不会出错,但实际上只是在继承类中新定义了与父类private方法名字相同的方法而已。
3.final类禁止继承
final类中所有的方法都默认为final,因为此时无法再覆盖它们。但final类的非私有变量没有此限制。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值