final修饰符

final可以修饰变量(各种变量)、方法、类。
final与abstract是互斥:永远不能同时出现!

final修饰变量

该变量被赋初始值之后,不能被重新赋值! 
final修饰的变量必须被赋值,且只能赋值一次。

final修饰成员变量

非final的成员变量

程序员可以不显式指定初始值,系统会为之分配默认初始值,初始值分配规则与数组元素的初始值分配规则完全相同哦。final的成员变量,程序员必须显式指定初始值。

final的成员变量

●final实例变量,必须显式指定初始值。只能在以下3个位置的其中之-指定:
一定义时指定初始值。
一实例初始化块
一每个构造器显式指定一次初始值。
上面3个位置的本质其实只有一个:构造器。

如果用构造器初始化final变量,必须在每个构造器里都初始化final变量。

public class Final修饰符 
{
	final int a;
	public Final修饰符()
	{
		a=2;
	}
	public Final修饰符(String s)
	{
		a=20;
	}
	public static void main(String[] args) 
	{
		Final修饰符 aa=new Final修饰符();
		Final修饰符 bb=new Final修饰符("22");
		System.out.println(aa.a+" "+bb.a);
	}
}

结果:
2 20

● final类变量,必须显式指定初始值。只能在以下2个位置的其中之-指定:

  • 定义时指定初始值。
  • 类初始化块。
    上面2个位置的本质其实只有一个,类初始化块。

final修饰局部变量

非final的局部变量,程序员必须先指定初始值,然后才能使用。
final的局部变量,程序员必须先指定初始值,然后才能使用。
final局部变量不能被重新赋值。

final修饰的是引用类型的变量

final只保证该引用变量本身不会被重新赋值,该变量所引用的对象完全可以被修改!

final修饰的 “宏替换”的变量

如果一个变量满足以下3个条件:
-变量有final修饰。
-声明变量时指定了初始值。
-变量的初始值可以在编译时确定(初始值的表达式中没有变量、方法调用等)
这个变量就会消失,所有出现该变量的地方,在编译时就会替换成该变量的值。

public class FinalTest2
{
	public static void main(String[] args)
	{
		final String s1 = "fkit";
		final String s2 = s1 + ".org";
		final String s3 = s2 +" is";
		final String s4 = s3 +" a very";
		final String s5 = s4 +" good education center!";
		System. out. println(s5) ;
		// 上面代码相当于:
		System. out .println("fkit.org is a very good education center!") ;
	}
}

final修饰方法:

表明该方法不允许被子类重写。
一一该方法可以被重载,也可以被子类调用!
[备注] : private方法已经被隐藏在该类的内部,子类无法访问该方法,因此不可能被重写。
final修饰private万法纯属多余!
但Java是允许的!

class PrivateFinalMethodText
{
	private final void text(){
	System.out.println("fulei");	
	}
}
class sub extends PrivateFinalMethodText
{
	public void text(){
		System.out.println("zilei");
	}
}

final修饰类

表明该类不能派生子类!
jdk里很多类都是final类: String、 Math、 System
Object是否为final? - 一定不是final的 !

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值