首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java this 關鍵字深度解析與方法重載完整指南

     編輯:Java 相關知識

this 關鍵字三大核心用法

1. 區分同名變數

當區域變數(參數)與成員變數同名時,this 明確指向成員變數:

public class Demo {
    public String name;
    public int age;

    public Demo(String name, int age) {
        this.name = name;  // this.name = 成員變數, name = 參數
        this.age = age;
    }

    public void say() {
        System.out.println("名字:" + name + ",年齡:" + age); // 此處 this 可省略
    }
}

2. 呼叫本類其他建構子

必須置於建構子第一行,一個建構子只能呼叫一個其他建構子:

public Demo() {
    this("預設名", 0); // 呼叫帶參建構子
}

public Demo(String name, int age) {
    this.name = name;
    this.age = age;
}

3. 作為參數傳遞當前物件

class A {
    public A() { new B(this).print(); } // 匿名物件傳遞 this
    public void print() { System.out.println("Hello from A!"); }
}

class B {
    A a;
    public B(A a) { this.a = a; }
    public void print() { a.print(); System.out.println("Hello from B!"); }
}

方法重載核心規則

  • 方法名必須相同
  • 參數列表必須不同(個數/類型/順序任一不同)
  • 返回類型可同可不同
  • 僅返回類型不同不構成重載
  • final 方法不可重載,static 方法不可重載但可重新宣告

重載實戰範例

public class Demo {
    void test() { System.out.println("無參數"); }
    void test(int a) { System.out.println("int: " + a); }
    void test(int a, int b) { System.out.println("兩參數: " + a + ", " + b); }
    double test(double a) { System.out.println("double: " + a); return a * a; }

    public static void main(String[] args) {
        Demo obj = new Demo();
        obj.test();
        obj.test(2);
        obj.test(2, 3);
        obj.test(2.0); // 匹配 double 版本
    }
}

編譯器重載解析機制

編譯器根據呼叫時的實際參數類型、個數、順序進行逐一匹配(靜態綁定),匹配失敗則編譯錯誤。這就是「重載解析」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved