Computer >> Máy Tính >  >> Lập trình >> Java

Chúng ta có thể Ghi đè hoặc Ghi đè các phương thức tĩnh trong Java không?

Phương thức tĩnh, trong java có thể được nạp chồng. Nhưng có một điều kiện là không thể tải quá hai phương thức, chúng chỉ khác nhau do từ khóa 'static'.

Hãy để chúng tôi xem một ví dụ -

Ví dụ

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);
   }
}

Đầu ra

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

Một lớp có tên Demo chứa một hàm có tên là ‘test’ để in một thông báo cụ thể. Nó cũng định nghĩa một hàm khác có tên là ‘test’ với một giá trị nguyên là một tham số. Thông báo liên quan được hiển thị bên trong nội dung chức năng. Trong hàm chính, hàm kiểm tra được gọi mà không có tham số và với tham số nguyên. Thông báo liên quan được hiển thị trên bảng điều khiển.

Không thể ghi đè các phương thức static trong Java. Các phương thức tĩnh có cùng chữ ký có thể được xác định trong lớp con, nhưng nó sẽ không phải là đa hình thời gian chạy. Do đó, ghi đè là không thể. Đây là một ví dụ -

Ví dụ

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");
   }
}

Đầu ra

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

Lớp cơ sở có một hàm tĩnh có tên là ‘show’ in ra một thông báo. Tương tự, một hàm khác có tên là ‘print_it’ sẽ hiển thị một thông báo. Một lớp được dẫn xuất từ ​​lớp cơ sở kế thừa hai chức năng. Một lớp có tên Demo chứa hàm chính tạo ra một thể hiện của lớp cơ sở thuộc lớp kiểu dẫn xuất. Các thông báo liên quan được hiển thị trên bảng điều khiển.