第一章 面向对象
第二章 异常
第三章 数组
第四章 常用类
第五章 集合
第六章 IO流
第七章 线程
第八章 反射
第九章 Socket编程

java中final关键字详解

 

final关键字修饰类, 修饰字段, 修饰方法,修饰局部变量,修饰方法的形参

 

final修饰类,表示最终类, 不能被继承,不能作为父类存在

 

final修饰字段,在定义时必须显示初始化, 不能被修改, 一般与static同时使用,所有字母都大写,称为final常量

 

final修饰方法,不能被覆盖(重写)

 

final修饰局部变量, 一旦初始化就不能再修改, 注意final修饰引用类型变量,是指这个变量不能再指向 其他对象 , 可以修改它的字段值

 

final修饰方法形参, 在方法体中不能修改final参数的值

 

package com.bjpowernode.chapter01.demo04.p1;
/**
 * 1) final修饰类,表示这个类是最终类, 不能被继承
 * 		如System类/String类就是使用final修饰的
 * 		当定义的类不想被别的类继承时, 就可以使用final修饰
 * @author Administrator
 *
 */
public final class Father {

}

package com.bjpowernode.chapter01.demo04.p2;
/**
 * 2) final修饰字段
 * 		final字段必须初始化,要么在定义时赋初值,要么在构造方法中赋初值
 * 		final字段不能重新赋值
 * 		一般情况下,final修饰字段时, 同时使用static一起修饰, 称为final常量 , 所有字母都大写
 * @author Administrator
 *
 */
public class Father2 {
	int xx;
	int yy = 20; 
	
	final int oo = 456;  		//final字段在定义时显示初始化
	final int zz;				//final字段在构造方法中显示初始化
	final static double PI = 3.14;		//final常量 
	
	public Father2() {
		zz = 121;
	}
	
	public void mm() {
		xx = 123;
		yy = 202;
//		zz = 789;  //he final field Father2.zz cannot be assigned
//		oo = 369;	//final字段不能被重新赋值
	}
}

package com.bjpowernode.chapter01.demo04.p3;
/**
 * 3) final修饰方法, 不 能被子类重写(覆盖)
 * 		注意:子类可以继承到final方法, 只是不能重写
 * @author Administrator
 *
 */
public class Father3 {
	public void m1(int xx) {
		System.out.println("父类的实例方法,可以子类覆盖");
	}
	
	public final void m2(int x, int y ) {
		System.out.println("使用final修饰的方法, 不能被子类重写");
	}
}

package com.bjpowernode.chapter01.demo04.p4;

import com.bjpowernode.chapter01.demo03.Book;

/**
 * 4) final修饰局部变量
 * 		一旦初始化完成, 就不能再重新赋值
 * @author Administrator
 *
 */
public class Test {

	public static void main(String[] args) {
		//定义局部变量
		int x ;
		x = 10;
		int y = 20; 
		//final修饰局部变量
		final int z;
		z = 30;
		final int t = 40;
		
		//可以给局部变量重新赋值
		x = 101;
		y = 202;
//		z = 303; 		//不能给final局部变量重新赋值
		
		//final修饰引用类型变量
		final Book  book1 = new Book("java入门", "勇哥", "动力节点", 66.6);
		//final关键字修饰的是book1变量,不能给book1变量重新赋值,可以对象的字段值
//		book1 = new Book("java高级", "勇哥", "动力节点", 88.8);
		book1.name = "java高级技术";
		
	} 

}

package com.bjpowernode.chapter01.demo04.p5;
/**
 * 5) final修饰方法形参
 * 		final形参不能被赋值
 * @author Administrator
 *
 */
public class Test {

	public static void main(String[] args) {
		m1(10, 20); 	//在调用方法时, 给final形参初始化
	}

	public static void m1( int x, final int y ) {
		x = 101;
//		y = 202;		//final形参不能被赋值
	}
}

 

全部教程