Sobes.tech
Middle

Vorbește despre regulile de suprasarcină a metodelor.

sobes.tech AI

Răspuns de la AI

Suprascrierea metodelor (Method Overloading) în programarea orientată pe obiecte permite definirea mai multor metode în aceeași clasă cu același nume, dar cu semnături diferite.

Regulile principale pentru suprascrierea metodelor:

  1. Diferența în semnături: Semnătura unei metode include numele metodei și lista tipurilor parametrilor săi în ordinea corespunzătoare. Pentru ca metodele să fie considerate suprascrise, semnăturile lor trebuie să fie diferite.

    // Exemple de semnături diferite
    void print(int i) { }
    void print(String s) { }
    void print(int i, String s) { }
    void print(String s, int i) { } // Ordine diferită a parametrilor
    
  2. Numele metodei trebuie să fie același: Metodele suprascrise trebuie să aibă același nume.

    // Exemplu corect de suprascriere
    class Example {
        void process(int a) { }
        void process(double b) { }
    }
    
  3. Tipul de returnare nu face parte din semnătură: Schimbarea doar a tipului de returnare nu face ca metodele să fie suprascrise. Compilatorul nu poate distinge ce metodă trebuie apelată dacă semnăturile parametrilor sunt identice.

    // Nu este suprascriere - eroare de compilare
    int calculate() { return 1; }
    String calculate() { return "error"; }
    
  4. Modificatorii de acces și specificatorii de excepții nu influențează suprascrierea: În mod similar cu tipul de returnare, schimbarea doar a modificatorilor de acces (public, private, protected, default) sau lista excepțiilor aruncate (throws) nu duce la suprascriere.

    // Nu este suprascriere - eroare de compilare dacă semnăturile parametrilor sunt identice
    public void doSomething() { }
    private void doSomething() { }
    
  5. Ordinea parametrilor are importanță: Schimbarea ordinii tipurilor parametrilor face ca semnăturile să fie diferite.

    // Este suprascriere
    void setup(int width, int height) { }
    void setup(int height, String unit) { } // Diferență la al doilea parametru
    void setup(String unit, int size) { } // Diferență de tip și ordine a parametrilor
    
  6. Numărul de parametri are importanță: Numere diferite de parametri conduc la semnături diferite.

    // Este suprascriere
    void log(String message) { }
    void log(String message, int level) { }
    

Prin urmare, factorul cheie pentru suprascrierea metodelor este unicitatea semnăturii metodei, care este determinată de numele său și de setul (tipurile și ordinea) parametrilor săi.