JavaRush /Java Blog /Random-IT /Metodi in Java
articles
Livello 15

Metodi in Java

Pubblicato nel gruppo Random-IT
Metodi in Java - 1In Java, un'applicazione è composta da classi. Le classi, a loro volta, sono costituite da variabili. Sono responsabili della memorizzazione di dati e metodi responsabili del comportamento della classe: in altre parole, della logica che può fornire (ad esempio, elaborando alcuni dati, chiamando altri metodi, ecc.). Possiamo parlare a lungo di tali componenti come variabili, ma non è per questo che ci siamo riuniti oggi. Parliamo meglio di tale componente della classe come metodo. Metodi in Java - 2Un metodo è un blocco di codice denominato dichiarato all'interno di una classe. Contiene una certa sequenza completa di azioni (istruzioni) volte a risolvere un problema separato, che può essere riutilizzato. In altre parole, un metodo è una funzione: qualcosa che la tua classe può fare. Anche altre lingue hanno funzioni. Solo in Java sono membri di classi e, secondo la terminologia OOP, sono chiamati metodi. Ma prima di continuare, facciamo un piccolo esempio:
public String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
  return resultSentence;
}
Non c'è niente di complicato qui: un metodo Java il cui compito è generare una stringa di saluto con il nome che gli passiamo. Come ad esempio: Hello world! My name is Bobby comprendiamo correttamente la costruzione di un metodo osservando ciascuna parola chiave nella dichiarazione del metodo (da sinistra a destra). La nostra prima parola chiave è publice denota un modificatore di accesso:

Modificatori di accesso

Indicano l'ambito di visibilità consentito per i membri della classe, cioè la restrizione dei luoghi in cui è consentito utilizzare una variabile o un metodo. Metodi in Java - 3In Java vengono utilizzati i seguenti modificatori di accesso:
  • pubblico : pubblico. I metodi o i campi con questo modificatore sono pubblici, visibili ad altre classi (o meglio, ai loro metodi e campi) dal pacchetto corrente e da pacchetti esterni. Questo è il livello di accesso più ampio conosciuto;

  • protetto : è possibile accedere ai metodi o alle variabili con questo modificatore da qualsiasi punto della classe o del pacchetto corrente, o nelle classi che ereditano questo, così come i metodi o i campi, anche se si trovano in altri pacchetti

    protected String constructHelloSentence(String name) {...}
  • Modificatore predefinito. Se un campo o un metodo di classe non dispone di un modificatore, viene applicato il modificatore predefinito. In questo caso, i campi o i metodi sono visibili a tutte le classi nel pacchetto corrente (come protected , ma senza visibilità durante l'ereditarietà).

    String constructHelloSentence(String name) {...}
  • private : l'opposto del modificatore public . Un metodo o una variabile con tale modificatore è disponibile solo nella classe in cui è dichiarato.

    private String constructHelloSentence(String name) {...}
Successivamente abbiamo Stringla firma del metodo (la prima riga del metodo che descrive le sue proprietà).

Valore di ritorno

Il valore restituito sono i dati (un risultato dell'esecuzione del metodo) che vengono sostituiti dopo la chiamata. Ogni metodo ha un valore di ritorno. O no?

Metodi del valore restituito

Questo valore può essere qualsiasi tipo di dato: una variabile di tipo semplice o di tipo riferimento. In questo esempio indichiamo che il metodo deve restituire un oggetto di tipo Stringche, come ricordiamo, è una classe che descrive una stringa. Il secondo punto qui è la parola return. Ha una relazione diretta con il valore restituito: il valore successivo verrà rispedito al punto in cui è stato chiamato il metodo e il metodo stesso verrà quindi returnchiuso. Questa parola solitamente appare nell'ultima riga del metodo (ad eccezione dei metodi con vari rami come if, else...). Se scrivi il codice nella riga successiva dopo return:
private String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  return resultSentence;
  System.out.println(resultSentence);
}
quindi riceveremo maledizioni dal compilatore, il che non è molto buono (il compilatore non consiglierà sciocchezze). È inoltre necessario ricordare che il tipo di dati successivo сdeve corrispondere a quello dichiarato nella firma del metodo. Maggiori returninformazioni qui .

vuoto

A cosa serve voidin Java? Non tutti i metodi hanno un valore restituito. Alcuni non hanno nulla o non hanno bisogno di restituire nulla. Cosa fare allora? Quindi nella firma del metodo scriviamo void. Come sarebbe il nostro metodo senza un valore di ritorno?
protected void constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
}
Probabilmente avrai notato che insieme al valore restituito returnè scomparsa la parola Così è, perché il nostro metodo non dovrebbe restituire nulla. Tuttavia può essere collocato qui, ma senza alcun significato, semplicemente return; nell'ultima riga. Questo è generalmente inutile, quindi voidè facoltativo nei metodi con. Tuttavia, può essere utilizzato utilmente in voidmetodi, come rami o cicli, in cui si desidera uscire immediatamente dal metodo. Successivamente nella dichiarazione del metodo abbiamo avuto constructHelloSentence.

Nomi dei metodi

constructHelloSentence - il nome del metodo, un tratto distintivo grazie al quale possiamo distinguere l'uno o l'altro metodo. E, di conseguenza, chiama l'uno o l'altro metodo. Metodi in Java - 4I nomi dei metodi devono iniziare con una lettera minuscola, ma utilizzare anche il maiuscolo cammello (CamelCase, camel case): ad es. Ogni parola successiva nel nome è adiacente alla precedente ed è scritta con la lettera maiuscola. I nomi dei metodi dovrebbero descrivere il metodo (il miglior commento è la denominazione corretta). Per fare ciò, usa verbi o combinazioni con verbi: getCat, delete, createCare così via. All'interno di una classe, i nomi dei metodi devono essere univoci (senza contare l'overload del metodo, di cui parleremo più avanti). Diamo un'occhiata più approfondita al metodo che stiamo analizzando e vediamo ( String name)

Parametri del metodo

I metodi possono (o meno) contenere determinati dati che provengono dall'esterno, vale a dire dal luogo in cui è stato chiamato il metodo. Nel nostro caso, vediamo che arriva un oggetto di tipo Stringcon un nome namee successivamente utilizziamo questa variabile nel nostro metodo. È possibile utilizzare un numero illimitato di parametri in un metodo, ma non è consigliabile utilizzarne più di 7. Quando non conosciamo il numero esatto di elementi, ma tutti questi elementi sono necessari per lo stesso scopo e saranno dello stesso tipo (ad esempio, String), vengono utilizzati i puntini di sospensione:
public void constructHelloSentence(String...name) {
 ...
}
L'appello a ciascun elemento sarà così: name[0] ti ricorda qualcosa? Esatto, array! Non cambierà nulla se scriviamo:
protected void constructHelloSentence(String[] name) {
 ...
}
Anche l'accesso agli elementi avrà la forma: name[1] E ancora una cosa. Gli argomenti del metodo possono essere definitivi :
public String constructHelloSentence(final String name) {
  ...
}
Ciò significa che il riferimento al nome è legato a un oggetto specifico Stringe non può essere sovrascritto. finalPuoi leggere come lavorare con le variabili di riferimento e la loro interazione con le parole riservate nel materiale " Tipi di dati di riferimento in Java ".

Metodi di chiamata

Quindi, abbiamo risolto la creazione dei metodi, ora parliamo del loro utilizzo. Come chiamare un metodo in Java? Metodi in Java - 5Ogni metodo in Java è in una classe. Per capire come funzionano i metodi di chiamata in Java, prendiamo una lezione:
public class StringConstructor {
  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
Poiché il nostro metodo non è statico (questo è un argomento di discussione separato che va oltre lo scopo dell’articolo di oggi), per chiamarlo è necessario prima creare un oggetto e poi chiamare il metodo su di esso:
class Application{
  public static void main(String[] args) {
     StringConstructor stringConstructor = new StringConstructor();
     stringConstructor.constructHelloSentence("Den");
  }
}
Negli argomenti del nostro metodo, abbiamo passato la stringa (nome) che vogliamo vedere nella stringa risultante visualizzata sullo schermo:

Hello world! My name is Den
Vale anche la pena ricordare che i metodi possono essere riutilizzati tutte le volte che ne abbiamo bisogno: non ci sono restrizioni.

Questo

Spesso puoi vedere la parola chiave in code this, come nei setter:
public void setValue(Long value) {
   this.value = value;
}
E cosa significa? thisin Java, questo è un riferimento all'oggetto corrente di questa classe. Ad esempio, se creassimo un oggetto:
StringConstructor stringConstructor = new StringConstructor();
quindi thisall'interno dell'oggetto stringConstructorci sarà un collegamento allo stesso oggetto. thisè usato sia per fare riferimento a una variabile oggetto (come nel setter sopra) sia per chiamare qualche metodo. Possiamo riscrivere un po' la nostra classe:
public class StringConstructor {

  public String constructHelloSentence(String name) {
     String resultSentence = this.getSentence()  + name;
     System.out.println(resultSentence);
     return resultSentence;
  }

  private String getSentence() {
     return "Hello world! My name is ";
  }
}
Attraverso thischiamiamo il metodo di questo oggetto per prendere la stringa richiesta. Tuttavia, di regola, questo non viene quasi utilizzato per i metodi, poiché anche senza di esso esiste un riferimento a un metodo di un determinato oggetto; viene utilizzato principalmente per una variabile oggetto.

Sovraccarico del metodo

Diciamo che avevamo bisogno di un metodo che esegua essenzialmente la stessa logica, ma in un formato Hello world! worldvogliamo invece inserire la nostra parola (stringa). Ma abbiamo già un metodo constructHelloSentence. Quindi, dobbiamo trovare un nuovo nome per un metodo che svolga essenzialmente la stessa funzionalità? Non importa come sia: in questo momento il sovraccarico di metodo ci viene in aiuto. Metodi in Java - 7L'overload del metodo è l'uso dello stesso nome del metodo più di una volta quando lo si dichiara in una classe. Dal punto di vista della sintassi linguistica, non possono esserci due nomi identici in uno spazio locale. Ma è anche possibile dichiarare metodi con gli stessi nomi ma argomenti diversi. In altre parole, una classe contiene sovraccarichi quando sono presenti due o più metodi con gli stessi nomi ma dati di input diversi:
public class Constructor {

  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }

  protected String constructHelloSentence(String firstName, String secondName) {
     String resultSentence = "Hello " + firstName + "! My name is " + secondName;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
Qui vediamo che i metodi non devono contenere lo stesso modificatore di accesso (così come il tipo restituito). Se viene chiamato un metodo sovraccaricato, tra diversi metodi dichiarati il ​​compilatore determina automaticamente quello richiesto in base ai parametri specificati durante la chiamata.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION