final: 最終的な
変更に使用できる最終的な構造: クラス、メソッド、変数
final はクラスを変更するために使用されます。これは、このクラスが他のクラスに継承できないことを示し、セキュリティを向上させ、プログラムの可読性を向上させます。
例: String クラス、System クラス、StringBuffer クラス...
コードのデモ:
最終クラス A{
}
class B は A を拡張します{ //エラー。継承できません。
}
final はメソッドの変更に使用され、このメソッドがサブクラスによってオーバーライドできないことを示します。
例: Object
#getClass();
class A { public final void print() { System.out.println("A"); } } class B extends A { public void print() { // 错误,不能被重写。 } }
class A { private final String INFO = "嘻嘻"; //声明常量 public void print() { //INFO = "哈哈"; //The final field A.INFO cannot be assigned } }
final double MY_PI = 3.14;
//题目一: public class Test1 { public int addOne(final int x) { // return ++x; //Cannot assign a value to final variable 'x' return x + 1; } } //题目二: public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { // o = new Other(); o.i++; } } class Other { public int i; } //题目三: class Root{ static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root(){ super(); System.out.println("Root的无参数的构造器"); } } class Mid extends Root{ static{ System.out.println("Mid的静态初始化块"); } { System.out.println("Mid的普通初始化块"); } public Mid(){ super(); System.out.println("Mid的无参数的构造器"); } public Mid(String msg){ //通过this调用同一类中重载的构造器 this(); System.out.println("Mid的带参数构造器,其参数值:" + msg); } } class Leaf extends Mid{ static{ System.out.println("Leaf的静态初始化块"); } { System.out.println("Leaf的普通初始化块"); } public Leaf(){ //通过super调用父类中有一个字符串参数的构造器 super("小老师ir"); System.out.println("Leaf的构造器"); } } public class LeafTest{ public static void main(String[] args){ new Leaf(); System.out.println(); new Leaf(); } } /*output: Root的静态初始化块 Mid的静态初始化块 Leaf的静态初始化块 Root的普通初始化块 Root的无参数的构造器 Mid的普通初始化块 Mid的无参数的构造器 Mid的带参数构造器,其参数值:小老师ir Leaf的普通初始化块 Leaf的构造器 Root的普通初始化块 Root的无参数的构造器 Mid的普通初始化块 Mid的无参数的构造器 Mid的带参数构造器,其参数值:小老师ir Leaf的普通初始化块 Leaf的构造器 */
以上がJavaでのfinalキーワードの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。