📄 j02080310.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 + -