⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 j02080310.java

📁 经典java教材《java完美经典》一书中源码的完全收集
💻 JAVA
字号:
import java.lang.*;

class j02080310
{
	public static void main(String[] para)
  {	
		hasFinal obj = new hasFinal(10000);	
		hasFinal obj2 = new hasFinal(50000);
		obj.finFun("obj==");		
		obj2.finFun("obj2==");
		
		/*=====以下语句块错误,因为不能重设 final 变量之值======*/		
		//obj.myValue = 1111;			
		//obj.myValue2 = 2222;
		//obj.finVar = null;
		//obj.finVar2 = null;
		//obj2.myValue = 3333;			
		//obj2.myValue2 = 4444;
		//obj2.finVar = new myClass();
		//obj2.finVar2 = new myClass();
		/*====================================================*/
				
		obj.finVar.Var = 33333;  //myClass 类之 Var 成员不是 final
		obj.finVar2.Var = 70000;   
		System.out.println("obj.finVar.Var = " + obj.finVar.Var );
		System.out.println("obj.finVar2.Var = " + obj.finVar2.Var );	
		System.out.println("obj2.finVar.Var = " + obj2.finVar.Var );
		System.out.println("obj2.finVar2.Var = " + obj2.finVar2.Var );		
  }
}

class myClass
{
	public int Var;	
	public void showVar()
	{
		System.out.println("Var = " + Var);
	}
}

class hasFinal
{
	final int myValue; //定义时未指定初值
	final myClass finVar = new myClass();
	final static int myValue2 = 999 ;
	final static myClass finVar2;   //定义时未指定初值
	
	static 
	{  //可于此设定 static final 成员变量的初始值
		finVar2 = new myClass();
	}

	public hasFinal()
	{
		myValue = 888; // final 成员变量一定要初始化  
	}
	
	public hasFinal(int value)
	{   // 可于此设定非 static 之  final 成员变量的初始值
		myValue = value + 888;
		finVar.Var = value;		
		finVar2.Var = value + 777;

		//myValue2 = value + 999;  //这个方式不行,因为 static 成员变量早就已经配置好了
		    //在构造子内只是再次设定 static 成员变量之值,但 final 变量不允许再次设定其值,故 error
 	}
	
	public final void finFun()
	{
		System.out.println( "final method 可以 overload " );
	}
	public final void finFun(String key)
	{       // final 方法也可以 overload
		System.out.println( key + " myValue = " + myValue );
		System.out.println( key + " myValue2 = " + myValue2 );		
		System.out.println( key + " finVar = " + finVar );   //可了解 finaVar 实例的地址
		System.out.println( key + " finVar.Var = " + finVar.Var );			
		System.out.println( key + " finVar2 = " + finVar2 ); //可了解 finaVar2 实例的地址
		System.out.println( key + " finVar2.Var = " + finVar2.Var );
		System.out.println("====================================" );			
	}
}

class childClass extends hasFinal
{
	int myValue; //可隐藏(hide)继承自 hasFinal 的 final int myValue
  // 引用类的继承
	public void finFun(float x)
	{         //可 overload 
		System.out.println("overload final method");
	}
	
	/*======不能覆盖(override)继承自 hasFinal 之 final 的 void finFun(String key)*/
  /*
  public void finFun(String str)
	{
		System.out.println(str + "override final method");
	}*/

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -