首頁  >  文章  >  Java  >  Java中的不同名稱重複使用技術

Java中的不同名稱重複使用技術

PHPz
PHPz轉載
2023-08-28 14:49:061307瀏覽

Java中的不同名稱重複使用技術

在 Java 中,對於各種類型的實體(例如變數、方法、資料型別或套件),則有不同的名稱重複使用技術。這些技術根據實體的需要和使用影響實體的可近性和行為。在本文中,我們將討論在 Java 中重複使用名稱的四種常見方法:覆蓋、隱藏、重載和遮蔽

Java 中的名稱重複使用技術

陰影

此技術允許局部變數與封閉類別的另一個欄位或成員具有相同的名稱。在這種情況下,該成員的先前實作會被新變數的宣告所掩蓋。隱藏變數無法在隱藏範圍內透過其簡單名稱進行存取。

陰影範例

以下範例顯示變數的陰影

class OuterClass {
   int val1 = 12109659; // instance variable
   void printX() {
      int val1 = 11368; // local variable
      System.out.println("Value 1: " + val1); // belongs to current method
      System.out.println("Value 2: " + this.val1); // belongs to class
   }
}
public class Shwd {
   public static void main(String[] args) {
      OuterClass oc = new OuterClass(); // creating class object
      oc.printX(); // method call
   }
}

輸出

Value 1: 11368
Value 2: 12109659

在上面的程式碼中,我們在方法「printX()」中隱藏了實例變數「val1」。為了存取“val1”,我們使用了“this”關鍵字。

隱藏

此技術允許子類別隱藏其超類別中定義的靜態方法或欄位。 子類別實體必須與超類別實體具有相同的名稱和簽名。最多 我們中的一些人錯誤地認為隱藏是壓倒一切的。在方法重寫中,子類別替換了 用新方法實作原始方法,但在隱藏中,我們只是隱藏了 超類方法。另外,我們不能重寫靜態方法。

隱藏範例

以下範例說明了方法的隱藏。

class ClassA {
   public static void print() {
      System.out.println("This is Super Class method");
   }
}
class ClassB extends ClassA {
   public static void print() {
      System.out.println("This is Sub Class method");
   }
}
public class Main {
   public static void main(String[] args) {
      ClassA s1 = new ClassA(); // creating object
      ClassA s2 = new ClassB();
      // calling the methods
      s1.print();
      s2.print();
      ClassB.print();
   }
}

輸出

This is Super Class method
This is Super Class method
This is Sub Class method

在上面的程式碼中,我們定義了一個“Super”和一個“Sub”類別以及一個“print()” 方法。 ‘Sub’類別的‘print()’方法隱藏了‘Super’類別的方法。如果‘s2.print’ 會印出子類別的內容,那麼這個例子就會被考慮 作為方法重寫而不是隱藏。

方法重載

當我們建立兩個或多個同名但具有不同清單的方法時 那麼,參數在同一個類體中,我們稱之為方法重載。編譯器 根據參數類型決定編譯時的方法呼叫

方法重載範例

這個例子展示了方法重載的實作。

public class Ovrld {
   public static void methodA(String st1) {
      System.out.println("First method string: " + st1);
   }
   public static void methodA(String st1, String st2) { // overloading
      System.out.println("Second Method");
      System.out.println("String1: " + st1 + ", String2: " + st2);
   }
   public static void main(String args[]) {
      Ovrld obj = new Ovrld();
      // method calling
      obj.methodA("Tutorialspoint");
      obj.methodA("Simple", "Learning");
   }
}

輸出

First method string: Tutorialspoint
Second Method
String1: Simple, String2: Learning

在上面的程式碼中,我們定義了兩個同名但參數不同的方法。在通話過程中,我們使用了不同的論點。

方法重寫

當我們在超級類別和子類別中建立兩個或多個同名且具有相同參數清單的方法時,我們將其稱為方法重寫。方法的回傳類型也是相同的。

方法重寫範例

以下範例示範了方法的重寫。

class Ovriid1 {
   public void methodA(String st1) {
      System.out.println("First method string: " + st1);
   }
}
public class Ovriid2 extends Ovriid1 {
   public void methodA(String st1) {
      System.out.println("Second Method string: " + st1);
   }
   public static void main(String args[]) {
      Ovriid1 obj1 = new Ovriid1();
      Ovriid1 obj2 = new Ovriid2();
      obj1.methodA("Tutorialspoint");
      obj2.methodA("Tutorialspoint");
   }
}

輸出

First method string: Tutorialspoint
Second Method string: Tutorialspoint

在上面的程式碼中,子類別「Ovriid2」覆寫了超類別的「methodA()」。

結論

在本文中,我們學習了重複使用變數和方法名稱的各種技術,例如方法重載、隱藏、隱藏和方法覆蓋。我們也了解如何在 Java 程式中實際實作它們。

以上是Java中的不同名稱重複使用技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除