/ *
- キーワード決勝を使用します
- Javaクラスで宣言され、変数やメソッドは、キーワード、最終的に使用して変更することができる、と述べた「究極の。」
- 文字列、システム、StringBufferの:例えば、継承することができない、最終的なクラスを変更するために使用される1、。
- 図2に示すように、例えば、書き換えができない最後の方法を変更するために使用される場合、クラスオブジェクトのgetClass()。
- これは一定であることを示す、最終的な変数を変更するために使用される、値を変更することはできません3、
- 修飾された変数の最終的な特性は、割り当て位置明示的な初期化、コードブロックの割り当て、割り当てコンストラクタを考える3.1。
- コンストラクタオブジェクトが作成されてロードした後、定数はオブジェクトを使用して、割り当てる必要があります。方法のこの時間は、定数に割り当てることはできません。
- 異なる定数オブジェクト場合、コンストラクタ割り当て、同一のコードブロックの割り当てまたは明示的な初期化中に割り当てます。
- 3.2最終の変性ブロック変数は、パラメータを表すパラメータ最終的な変形が一定である場合は特に、ローカルです。代入したら、
- 唯一の生体内で呼び出すことができます。このパラメータは、変更または再割り当てすることはできません。
- 図4に示すように、最終的な静的と組み合わせて使用することができ、最終静的プロパティおよびメソッドは、負荷および負荷としてクラスを変更できないことを示す、修飾されてもよいです。
- また、グローバル定数として知られているプロパティの静的最終的な変形は、インターフェースは、静的最終属性が変更されています。
* /
package object_chapter2;
public class Object_Final {
static final int number = 10;
// final int up;//常量无法默认初始化,必须赋值
final int up = 0;
final int left;
final int right;
{
left = 20;//可以在代码块中对常量赋值;
}
public Object_Final() {
right = 20;//构造器中可以对常量赋值
}
public Object_Final(int n) {
right = n;//所有重载的构造器中都要对常量赋值,避免没有赋值的情况出现
}
public static void main(String[] args) {
//number = 20;//final修饰的属性为常量无法修改
System.out.println(number + 10);//常量只能调用
final boolean b = true;
final double PI = 3.1415;//final可以修饰局部变量
//System.out.println(PI++);//无法修改
System.out.println(2 * PI);//可以被调用
System.out.println(!b);
final Final f = new Final();
// f = null;//final修饰的对象无法修改
// f = new Final();
System.out.println(f.num);
f.num = 22;
System.out.println(f.num);//final修饰的对象属性可以修改
}
public final void say() {
System.out.println("Hello");
}
}
final class Final extends Object_Final{
int num = 11;
// public void say() {//final修饰的方法无法被子类重写
//
// }
}
//class FinalA extends Final{//final 修饰的类无法被继承
//
//}