JAVAにおけるfinalキーワードの役割

5031 ワード

一、finalキーワードの機能概要
finalキーワードは、参照、メソッド、クラスを修飾するために使用できます.
1、引用を修飾する
  • 参照が基本データ型である場合、参照は定数であり、値は変更できません.
  • 参照がオブジェクト、配列などの参照データ型である場合、オブジェクト、配列自体は変更できますが、オブジェクトまたは配列のアドレスへの参照は変更できません.
  • 参照時のクラスのメンバー変数の場合は、その場で値を割り当てる必要があります.そうしないと、コンパイルはエラーを報告します.

  • 例は次のとおりです.
    final class Person {
        String name ="zs";
    //3.
    //final int age; final int age = 10; } public class Demo01 { public static void main(String[] args) {
    //1. ,
    final int i = 9; //i = 10;

    //2. , Person p = new Person(); p.name = "lisi"; final int[] arr = {1,2,3,45}; arr[3] = 999; //arr = new int[]{1,4,56,78}; } }

      2.方法を修飾するために使用されます
    final修飾法を用いると,この方法は最終的な方法となり,クラスに書き換えられない.しかし、この方法は依然として継承することができる.
       
    class Person {
        public final void say() {
            System.out.println(" ....");
        }
        public void eat() {
            System.out.println(" ...");
        }
    }
    class Teacher extends Person {
        //1. final          ,         
        /*@Override
        public void say() {
            System.out.println("         ...");
        }*/
        
        public void eat() {
            System.out.println("         ...");
        }
    }
    public class Demo02 {
        public static void main(String[] args) {
            Teacher t = new Teacher();
            t.say();
        }    
    }

    3.クラスの修飾に使用
    finalでクラスを変更すると、そのクラスは最終クラスとなり、継承できません.略称は「断子絶孫類」.
    /***
     * final  3:   ,        ,     
     * @author Administrator
     *
     */
    final class Person02 {    }
    //class Teacher02 extends Person02 { }
    //class MyString extends String{}
    public class Demo03 {
    
    }

    たとえばよく使われるStringクラスが最終クラスです.