logo

Possiamo sovrascrivere il metodo statico in Java?

A Giava, prevalente E sovraccarico sono le due caratteristiche più importanti di programmazione orientata agli oggetti . La funzione viene utilizzata quando il programmatore desidera ottenere polimorfismo . La domanda, possiamo sovrascrivere il metodo statico in Java O puoi sovraccaricare il metodo statico in Java sono le due domande più importanti poste Intervista a Java . In questa sezione, comprenderemo in breve l'overloading e l'override. Abbiamo anche spiegato la risposta di perché non possiamo sovrascrivere il metodo statico in Java?

Metodo statico

Il metodo che ha una parola chiave statica prima del nome del metodo è noto come a metodo statico . È noto anche come a metodo a livello di classe . Una copia del metodo statico è condivisa da tutti gli oggetti della classe.

 public static int sum() { } 

Possiamo invocare metodi statici utilizzando il nome della classe. Per esempio, Matematica.abs(a) metodo . Il metodo restituisce il valore assoluto dell'argomento passato. Il metodo statico non può accedere a variabili o metodi di istanza.

Metodo prioritario

È una caratteristica di programmazione orientata agli oggetti . Viene utilizzato per ottenere il polimorfismo in fase di esecuzione. La sottoclasse fornisce un'implementazione specifica di un metodo già fornito dalla classe genitore, nota come metodo prevalente. La firma del metodo nella classe genitore e figlia deve essere la stessa. In metodo prevalente , quale metodo deve essere eseguito, deciso in fase di esecuzione. La decisione viene presa in base all'oggetto che abbiamo chiamato.

Sovraccarico del metodo

È anche una caratteristica della programmazione orientata agli oggetti. Viene utilizzato per ottenere il polimorfismo in fase di compilazione. Ci consente di utilizzare lo stesso nome del metodo ma firme diverse. Se una classe ha più di un metodo con lo stesso nome ma una firma del metodo diversa, è nota come sovraccarico del metodo .

Abbiamo imparato cosa è sovraccarico e preponderante. Ora passiamo al punto.

Possiamo sovraccaricare un metodo statico?

La risposta è . Possiamo sovraccaricare metodi statici. Ma ricorda che la firma del metodo deve essere diversa. Consideriamo ad esempio il seguente programma Java.

OverloadStaticMethodExample1.java

 public class OverloadStaticMethodExample1 { //static method public static void display() { System.out.println('Static method called.'); } //overloaded static method public static void display(int x) { System.out.println('An overloaded static method called.'); } //main method public static void main(String args[]) { //calling static method by using the class name OverloadStaticMethodExample1.display(); OverloadStaticMethodExample1.display(160); } } 

Produzione:

 Static method called. An overloaded static method called. 

Qui sorge una domanda possiamo sovraccaricare i metodi se sono diversi solo per parola chiave statica.

La risposta è NO. Non possiamo sovrascrivere due metodi se differiscono solo per la parola chiave statica. Consideriamo ad esempio il seguente programma Java.

OverloadStaticMethodExample2.java

 public class OverloadStaticMethodExample2 { //static method public static void sum(int a, int b) { int c=a+b; System.out.println('The sum is: '+c); } //non-static method public void sum(int a, int b) { int c=a+b; System.out.println('The sum is: '+c); } //main method public static void main(String args[]) { //calling static method by using the class name OverloadStaticMethodExample2.sum(12, 90); } } 

Quando compiliamo il programma sopra, mostra il seguente errore.

 error: method sum(int,int) is already defined in class OverloadStaticMethodExample2 

Possiamo sovrascrivere un metodo statico?

NO, non possiamo eseguire l'override dei metodi statici perché l'override del metodo si basa sull'associazione dinamica in fase di esecuzione e i metodi statici sono collegati utilizzando l'associazione statica in fase di compilazione. Pertanto, non possiamo sovrascrivere i metodi statici.

La chiamata del metodo dipende dal tipo di oggetto che chiama il metodo statico. Significa:

  • Se chiamiamo un metodo statico utilizzando l'oggetto della classe genitore, il metodo statico originale verrà chiamato dalla classe genitore.
  • Se chiamiamo un metodo statico utilizzando l'oggetto della classe figlia, verrà chiamato il metodo statico della classe figlia.

Nell'esempio seguente, ParentClass ha un metodo statico denominato display() e anche ChildClass ha la stessa firma del metodo. Il metodo nella classe derivata (ChildClass) nasconde il metodo nella classe base. vediamo un esempio.

OverloadStaticMethodExample3.java

 public class OverloadStaticMethodExample3 { public static void main(String args[]) { ParentClass pc = new ChildClass(); //calling display() method by parent class object pc.display(); } } //parent class class ParentClass { //we cannot override the display() method public static void display() { System.out.printf('display() method of the parent class.'); } } //child class class ChildClass extends ParentClass { //the same method also exists in the ParentClass //it does not override, actually it is method hiding public static void display() { System.out.println('Overridden static method in Child Class in Java'); } } 

Produzione:

 display() method of the parent class.