`
incyanggan
  • 浏览: 32664 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Java菜鸟学习笔记--面向对象篇(十七):Final修饰符

阅读更多

Final

1. final关键字

在Java中, 可以使用final关键字修饰类、方法以及成员变量。

(1).final标记的类不能被继承;

(2).final标记的方法不能被子类复写;

(3).final标记的变量即成为常量,只能被赋值一次,对于基本类型,不可变指的是值对于引用类型,不可变指的是引用地址

注意: 如果使用final来声明常量,请遵守以下常规: final标记的变量名,所有单词字母都需大写.



Final Class

Afinalclasscannot be subclassed.

package me.testfinal;
final class Sub{		
}

class SuSu extends Sub{}//由于Sub是Final定义,所以不能继承
//cannot inherit from final Sub


Finalmethods


Afinalmethodcannot beoverriddenor hidden by subclasses.


package me.testfinal;
class Test{
		
	final int I=8;
	
	final void say(){
		
		System.out.println("Final定义 允许修改");
	}
	
	
}
class Sub extends Test{
	
	void say(){}
	
	
}
public class TestFinal{
	
	public static void main(String[] args){
		
		Sub your=new Sub();
		your.say();//编译错误
		/*输出:ay() in Sub cannot override say() in Test
		*///Final定义的不能更改了
			
		
	}

}


Finalvariables


Afinalvariablecan only be initialized once, either via an initializer or an assignment statement.


1.Final 常量 的定义

//Final 1.Final的变量值不能改变 2.Final 的方法不能重写 3.Final的方法不能被继承

package me.testfinal;
class Test{
		
	final int I=8;	
	
}

public class TestFinal{
	
	public static void main(String[] args){
		
		Test my=new Test();
		//my.I=100;
		/*输出:
		cannot assign a value to final variable i
		*///Final定义,不能改变这个值~
		
	}

}


2.Final & Static Final 常量的定义


//final与static final

package me.testfinal;
class Test{
		
	//要用大写书写常量
	private final String NAME="Gino";
	private final int A=100;
	public final int B=80;
	
	public static final int  C=60;
	//空白final
	public final int D;//必须在构造器时候初始化
	Test(){
		
			D=99;//要不在定义时候初始化,要不在构造器初始化
	
		
	}
	//	public static final int E;//编译错误
	/*
	 variable E might not have been initialized
	*///静态的必须在定义时候就初始化
	
	
	public void set(){
		
		D=66;
		/*cannot assign a value to final variable D
		D=66;*///只能在构造器或者定义的时候初始化他
	}
	
}
public class TestFinal{
	
	public static void main(String[] args){
	
		Test coco=new Test();
		
	}
}



3.Final 修饰 形参

//Final修饰参数

package me.testfinal;
class Test{
		
	public void say(final int i){
		
		i=9;//编译错误
		/*输出:
		TestFinal.java:8: error: final parameter i may not be assigned
		i=9;
		^
		1 error
		*///一旦形参接受了传过来的值,就不能在修改这个值了。这个值只读;
		System.out.println(i);
	}
	
	
	
}
public class TestFinal{
	
	public static void main(String[] args){
	
		Test coco=new Test();
		coco.say(5);//传5过去,但是在say方法里面i的值就只能是5了
		coco.say(9);//可以传9过去,同理现在say方法里面,i固定是9了
		
	}
}





作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics