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' 類的 'print()' 方法。如果 '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
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP