Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราสามารถโอเวอร์โหลดหรือแทนที่เมธอดสแตติกใน Java ได้หรือไม่


วิธีการแบบคงที่ใน java สามารถโอเวอร์โหลดได้ แต่มีเงื่อนไขว่าสองวิธีไม่สามารถโอเวอร์โหลดได้ ฉันต่างกันเพียงเพราะคำหลัก 'คงที่'

เรามาดูตัวอย่างกัน −

ตัวอย่าง

public class Demo{
   public static void test(){
      System.out.println("Demo class test function has been called");
   }
   public static void test(int val){
      System.out.println("Demo class test function with parameter has been called");
   }
   public static void main(String args[]){
      System.out.println("In the main class, Demo functions being called");
      Demo.test();
      Demo.test(57);
   }
}

ผลลัพธ์

In the main class, Demo functions being called
Demo class test function has been called
Demo class test function with parameter has been called

คลาสชื่อ Demo มีฟังก์ชันชื่อ 'test' ซึ่งพิมพ์ข้อความเฉพาะ นอกจากนี้ยังกำหนดฟังก์ชันอื่นชื่อ 'ทดสอบ' ด้วยค่าจำนวนเต็มเป็นพารามิเตอร์ ข้อความที่เกี่ยวข้องจะแสดงอยู่ในเนื้อหาของฟังก์ชัน ในฟังก์ชันหลัก ฟังก์ชันทดสอบจะถูกเรียกโดยไม่มีพารามิเตอร์และมีพารามิเตอร์เป็นจำนวนเต็ม ข้อความที่เกี่ยวข้องจะแสดงบนคอนโซล

วิธีการแบบคงที่ใน Java ไม่สามารถแทนที่ได้ เมธอดสแตติกที่มีลายเซ็นเหมือนกันสามารถกำหนดในคลาสย่อยได้ แต่จะไม่ใช่ความแตกต่างระหว่างรันไทม์ ดังนั้นจึงไม่สามารถเอาชนะได้ นี่คือตัวอย่าง −

ตัวอย่าง

class base_class{
   public static void show(){
      System.out.println("Static or class method from the base class");
   }
   public void print_it(){
      System.out.println("Non-static or an instance method from the base class");
   }
}
class derived_class extends base_class{
   public static void show(){
      System.out.println("Static or class method from the derived class");
   }
   public void print_it(){
      System.out.println("Non-static or an instance method from the derived class");
   }
}
public class Demo{
   public static void main(String args[]){
      base_class my_instance = new derived_class();
      System.out.println("Base class instance created.");
      my_instance.show();
      System.out.println("Function show called");
      my_instance.print_it();
      System.out.println("Function print_it called");
   }
}

ผลลัพธ์

Base class instance created.
Static or class method from the base class
Function show called
Non-static or an instance method from the derived class
Function print_it called

คลาสพื้นฐานมีฟังก์ชันสแตติกชื่อ 'show' ซึ่งพิมพ์ข้อความ ในทำนองเดียวกัน ฟังก์ชันอื่นชื่อ 'print_it' จะแสดงข้อความ คลาสมาจากคลาสพื้นฐานที่สืบทอดฟังก์ชันทั้งสอง คลาสชื่อ Demo มีฟังก์ชันหลักที่สร้างอินสแตนซ์ของคลาสพื้นฐานที่เป็นคลาสประเภทที่ได้รับ ข้อความที่เกี่ยวข้องจะแสดงบนคอนโซล