Java: cos’è la firma di un metodo e come differisce dalle funzioni in C

metodo_vs_function

Quando si programma in Java, uno dei concetti fondamentali è la firma di un metodo.
Sembra un termine elegante, ma in realtà descrive qualcosa di molto concreto: come Java riconosce e distingue un metodo da un altro. E sì, è diverso da ciò che succede con le funzioni in C.

Cos’è la firma di un metodo in Java?

In Java, la firma di un metodo è composta da:

  • Nome del metodo
  • Lista dei parametri (tipo + ordine)

E questo è tutto.
Una cosa che spesso sorprende gli studenti è che il tipo di ritorno NON fa parte della firma.

Per esempio:

int somma(int a, int b)
String somma(int a, int b)

Questi due non possono coesistere nello stesso contesto, perché per Java hanno la stessa firma:
somma(int, int)

Questo è fondamentale per il concetto di overloading, cioè la possibilità di avere più metodi con lo stesso nome ma parametri diversi.

E invece in C come funziona?

In C non si parla formalmente di firma nello stesso senso di Java, ma il concetto più vicino è la prototipazione della funzione, che include:

  • Nome della funzione
  • Lista e tipi dei parametri
  • Tipo di ritorno

In C, il tipo di ritorno è importante per distinguere una funzione.
Questo significa che, se teoricamente fosse possibile (spoiler: non lo è nel linguaggio), due funzioni con lo stesso nome ma ritorni diversi genererebbero un conflitto.

Esempio di prototipo in C:

int somma(int a, int b);

Qui il tipo di ritorno fa parte dell’identità della funzione, a differenza di Java.

Java vs C: le differenze chiave

AspettoJavaC
Concetto di firmaSolo nome + parametriNome + parametri + tipo di ritorno
OverloadingSupportatoNon supportato
Metodo/funzioneSempre dentro una classeLibero nel file C
Tipi parametriObbligatoriObbligatori
OrientamentoOOPProcedurale

In sostanza, Java punta a identificare i metodi in modo coerente con la programmazione orientata agli oggetti: il focus è cosa ricevi come input.
Il C, più minimalista e procedurale, considera invece tutta la struttura della funzione.

Conclusione

Capire la firma di un metodo è essenziale per scrivere codice pulito, usare correttamente l’overloading e interpretare gli errori del compilatore.
Confrontare Java e C aiuta anche a comprendere le differenze filosofiche tra i due linguaggi: Java è più rigido e strutturato, C è più libero ma richiede più attenzione.