final之理解

转载地址:http://wenku.baidu.com/view/2d4593d0ce2f0066f533224a.html

package com._final;
/*
 * final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可继承。
 * 说明:
 * 1.被final修饰的变量必须被初始化,方法如下:
 *   a.在定义的时候初始化。
 *   b.final变量可以在初始化块中初始化,不可以在静态初始化块中初始化。
 *   c.静态final变量可以在静态初始化块中初始化,不可以在初始化块中初始化。
 *   d.final变量还可以在类的构造器中初始化,但是静态final变量不可以。
 * 2.被final修饰的方法不可以被子类重写,但是这不影响它被子类继承。
 *   编译器在处理private方法时,是按照final方法来对待的。
 * 3.被final修饰的类,编译器处理它时会把它的所有方法都当作final,而由abstract定义的抽象类
 *   的抽象方法可以被它的子类进行重写,故无法同时用final与abstract来修饰同一个类,
 *   同样final也不能用来修饰接口。
 *   final的类所有方法都不能被重写,但这不表示final类的属性值也是不可改变的
 *   对final类中未用final定义变量可以改变属性值
 */
@SuppressWarnings("unused")
public class FinalTest {
//定义变量---------------------------------------------------	
	//final修饰基本类型,这个变量必须被赋值,并且是不可改变的。否则编译会报错
	private final int A = 0; 
    //final修饰对象,这个变量必须被赋值,而且对象的引用是不可改变的。
    //注意:不可改变的只是这个变量所保存的引用,并不是这个引用所指向的对象.否则编译会报错
    private final String B = new String();
    //在构造函数中初始化
    private final long C ;
	
	//非静态final变量可以在初始化块中初始化,但不可在静态初始化块中初始化
	private final int D ;
	//静态final变量可以在静态初始化块中初始化
	private static final int E;
	{
		D=2;
//		E=3;//编译报错(E是静态final变量,不能在非静态初始化块中初始化)
	}
	static{
//		D=2;//编译报错(D是非静态final变量,不能在静态初始化块中初始化)
		E=3;
	}
	
//定义方法---------------------------------------------------	
	public final void testFinal(){
		System.out.println("final定义方法");
	}
	public FinalTest() {
		super();
		C=1;
//		E=3;//编译报错(E是静态final变量,不能在构造函数中初始化)
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
/*
 * 子类
 */
class SunFinal extends FinalTest{
	//子类无法重写(override)父类定义final方法,否则编译报错。
/*	public void testFinal(){
		System.out.println("final定义方法");
	}
*/
	public static void main(String[] args) {
		SunFinal sf = new SunFinal();
		sf.testFinal();
	}
}
/*
 *final定义类 
 */
 final class  FinalClass{
	 int i=1;
	 final int k =2;
	 public static void main(String[] args) {
			FinalClass fc = new FinalClass();
			fc.i=10;//final类属性值可以改变,因为i变量前没有final
//			fc.k=6;//编译报错,因为final变量是不可改变的
		}
	
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值