ホームページ > Java > &#&チュートリアル > Javaでのfinalキーワードの使用方法

Javaでのfinalキーワードの使用方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2023-04-26 19:37:05
転載
1476 人が閲覧しました

1. 理解

final: 最終的な

2. 関数

変更に使用できる最終的な構造: クラス、メソッド、変数

1. 変更 - クラス

final はクラスを変更するために使用されます。これは、このクラスが他のクラスに継承できないことを示し、セキュリティを向上させ、プログラムの可読性を向上させます。

例: String クラス、System クラス、StringBuffer クラス...

コードのデモ:

最終クラス A{
}
class B は A を拡張します{ //エラー。継承できません。
}

2. Modification-method

final はメソッドの変更に使用され、このメソッドがサブクラスによってオーバーライドできないことを示します。

例: Object#getClass();

コードのデモ:

1

2

3

4

5

6

7

8

9

10

class A {

   public final void print() {

     System.out.println("A");

   }

}

class B extends A {

    public void print() {

    // 错误,不能被重写。

    }

}

ログイン後にコピー

3. 変更変数

最終的に変更された変数 (メンバー変数またはローカル変数) は定数と呼ばれます。名前は大文字で、一度しか割り当てることができません。

static Final は、属性 (グローバル定数) を変更するために使用されます。

コードのデモ:

1

2

3

4

5

6

7

class A {

   private final String INFO = "嘻嘻"; //声明常量

     public void print() {    

     //INFO = "哈哈";

     //The final field A.INFO cannot be assigned

     }

}

ログイン後にコピー

3.1 変更メンバー変数 (プロパティ)
Final マーク付きのメンバー変数は、宣言 (明示的に初期化) するか、各コンストラクターまたはコード ブロック内で宣言する必要があります。使えるようになる前に。

例:

final double MY_PI = 3.14;

3.2 変更 - ローカル変数
final を使用してローカル変数を変更する場合、次のことを示します。この仮パラメータは定数です。このメソッドを呼び出すときは、実パラメータを定数パラメータに割り当てます。この仮パラメータは、一度割り当てられるとメソッド本体内でのみ使用でき、再割り当てすることはできません。

3. よくある質問

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

//题目一:

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 サイトの他の関連記事を参照してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
ヘルプ: JAVA 暗号化データ PHP 復号化
から 1970-01-01 08:00:00
0
0
0
JAVAをインストールする
から 1970-01-01 08:00:00
0
0
0
Javaをインストールできません
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート