Final关键字

根据惯例,既是static又是final的域(即编译常量)将用大写表示,并使用下划线分割各个单词。Final关键字对于基本类型,会使其数据恒定不变。

但对于对象引用,final使得引用恒定不变--一旦引用被初始化指向某个对象,就无法再把它改为指向另一个对象,然而对象其自身是可以修改的。

这一限制,同样适用于数组,因为他也是对象。

空白final:java允许生成“空白final---指生命为final但未初始化的域。

这样在类中的final域就可以根据对象而有所不同,却又保持恒定不变的特性。必须在域的定义处或者构造器中用表达式对final进行初始化。

package com.htxx.action.business;
class F{	
}
public class BlankFinal {
   final F f;
   public BlankFinal() {
	// TODO Auto-generated constructor stub
	   f=new F();
	   f=new F();//The final field f may already have been assigned	   
}
   public static void main(String[] args) {	
}
}

Final关键字

Final参数

java允许在参数列表中以声明的方式将参数指明为final.这意味着无法再方法中更改参数引用指向的对象

package com.htxx.action.business;
class F{
}
public class BlankFinal {
   public BlankFinal() {
}
   void Method1(final F f){
	   f=new F();//The final local variable f cannot be assigned.
	   //It must be blank and not using a compound assignment
   }
   void method2(final int i){
	   i++;
	   //The final local variable i cannot be assigned. 
	   //It must be blank and not using a compound assignment
   }
}

Final方法

final修饰的方法可以把方法锁住,防止继承类修改他的含义。

package com.htxx.action.business;
class F{
	final void m1(){	
	}
}
public class BlankFinal extends F {
   void m1(){//Cannot override the final method from F
	   System.out.println("ttt");
   }
}

Final

当某个类被定义为final的时候,标明该类不能被继承。

package com.htxx.action.business;
final class F{
	private final void m1(){
		System.out.println("rrr");
	}
}
public class BlankFinal extends F {
	          //The type BlankFinal cannot subclass the final class F
    void m1(){
	   System.out.println("ttt");
   }
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值