java的final关键字

final的使用场景:

1.有些类在描述完之后,不想被继承

2.有些类中的部分方法功能是固定的,不想让子类重写


为了解决上述问题,我们需要使用final修饰符:final是最终,不可变的意思,它可以用来修饰类,类的成员以及成员变量和局部变量



final的使用分析:

1.final修饰的类不可以配继承,但是可以继承其他类

class A {} //A类
final class B extends A{} //B可以继承A类
class C extends B{} //C不能继承B类

2.final修饰的方法不可以被覆盖,但是父类没有被final修饰的方法,子类覆盖后可以加上final

class A {
	// final修饰的方法,不可以被覆盖,但可以继承使用
	public final void method1(){}
	public void method2(){}
}
class B extends A {
	//重写method2方法
	public final void method2(){}
}

3.final修饰的变量成为常量,该变量只能被赋值一次;在编译生产.class文件后,该变量变为常量值

final int j = 30;
j = 40; //赋值报错,final修饰的变量只能赋值一次

4.final修饰成员变量,需要在创建对象前赋值,否则报错(当没有显式赋值时,多个构造方法的均需要为其赋值)

class FinalDemo {
	//直接赋值
	final int i = 200;
	
	//final修饰的成员变量,需要在创建对象前赋值,否则报错。
	final int m; 
	public Demo(){
		//可以在创建对象时所调用的构造方法中,为变量m赋值
		m = 2017;
	}
}

5.final修饰引用类型的变量值为对象地址值,地址值不能更改,但是地址内的对象属性值可以修改

final Man m = new Man();
Man m2 = new Man();
m = m2; //final修饰的变量m,所记录的地址值不能改变
m.name = "lsy";//可以更改m对象中name属性值







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值