public String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
return resultSentence;
}
Não há nada complicado aqui: um método Java cuja tarefa é gerar uma string de saudação com o nome que passamos para ela. Como por exemplo - Hello world! My name is Bobby
vamos entender a construção de um método corretamente observando cada palavra-chave na declaração do método (da esquerda para a direita). Nossa primeira palavra-chave é public
e denota um modificador de acesso:
Modificadores de acesso
Eles indicam o escopo de visibilidade permitido para os membros da classe, ou seja, a restrição dos locais em que uma variável ou método pode ser usado.![Métodos em Java - 3](https://cdn.javarush.com/images/article/46fa511c-e579-41d7-83fe-14cbccec4303/512.jpeg)
-
público : público. Os métodos ou campos com este modificador são públicos, visíveis para outras classes (ou melhor, seus métodos e campos) do pacote atual e de pacotes externos. Este é o nível de acesso mais amplo conhecido;
-
protegido : métodos ou variáveis com este modificador podem ser acessados de qualquer lugar da classe ou pacote atual, ou em classes que herdam este, assim como métodos ou campos, mesmo que estejam em outros pacotes
protected String constructHelloSentence(String name) {...}
-
Modificador padrão. Se um campo ou método de classe não tiver um modificador, o modificador padrão será aplicado. Neste caso, os campos ou métodos ficam visíveis para todas as classes do pacote atual (como protected , mas sem visibilidade ao herdar).
String constructHelloSentence(String name) {...}
-
private : o oposto do modificador public . Um método ou variável com tal modificador só está disponível na classe em que foi declarado.
private String constructHelloSentence(String name) {...}
String
na assinatura do método (a primeira linha do método descrevendo suas propriedades).
Valor de retorno
O valor de retorno são os dados (algum resultado da execução do método) que vêm em seu lugar após a chamada. Todo método tem um valor de retorno. Ou não?Métodos de valor de retorno
Este valor pode ser qualquer tipo de dado: uma variável de tipo simples ou um tipo de referência. Neste exemplo indicamos que o método deve retornar um objeto do tipoString
, que, como lembramos, é uma classe que descreve uma string. O segundo ponto aqui é a palavra return
. Tem uma relação direta com o valor de retorno: o valor após ele será enviado de volta ao local onde o método foi chamado, e o próprio método será então return
fechado. Esta palavra geralmente aparece na última linha do método (exceto para métodos com vários ramos como if, else..
.). Se você escrever o código na próxima linha depois return
:
private String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
return resultSentence;
System.out.println(resultSentence);
}
então receberemos maldições do compilador, o que não é muito bom (o compilador não recomendará bobagens). Você também precisa lembrar que o tipo de dados posterior с
deve corresponder àquele declarado na assinatura do método. return
Leia mais sobre aqui .
vazio
Para que é usadovoid
em Java? Nem todos os métodos possuem um valor de retorno. Alguns não têm nada ou não precisam devolver nada. O que fazer então? Então, na assinatura do método, escrevemos void
. Como seria o nosso método sem um valor de retorno?
protected void constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
}
Você provavelmente notou que junto com o valor de retorno, a palavra return
So it is desapareceu, pois nosso método não deve retornar nada. Porém, pode ser colocado aqui, mas sem nenhum significado, apenas return
; na última linha. Isso geralmente é inútil, portanto void
é opcional em métodos com. No entanto, ele pode ser usado de forma útil em void
métodos, como ramificações ou loops, nos quais você deseja sair do método imediatamente. Em seguida, na declaração do método, tivemos constructHelloSentence
.
Nomes de métodos
constructHelloSentence
- o nome do método, uma característica distintiva pela qual podemos distinguir um ou outro método. E, consequentemente, chame um ou outro método. ![Métodos em Java - 4](https://cdn.javarush.com/images/article/4a227037-b95f-438a-ae97-c24f62b7087c/512.jpeg)
getCat
, delete
, createCar
e assim por diante. Dentro de uma classe, os nomes dos métodos devem ser únicos (sem contar a sobrecarga de métodos, sobre a qual falaremos um pouco mais tarde). Vamos examinar mais detalhadamente o método que estamos analisando e ver ( String name
)
Parâmetros do método
Os métodos podem (ou não) ter determinados dados que virão de fora, nomeadamente do local onde o método foi chamado. No nosso caso, vemos que chega um objeto do tipoString
com nome name
e futuramente utilizamos essa variável em nosso método. Você pode usar um número ilimitado de parâmetros em um método, mas mais de 7 não são recomendados. Quando não sabemos o número exato de elementos, mas todos esses elementos são necessários para o mesmo propósito e serão do mesmo tipo (por exemplo, String
), são usadas reticências:
public void constructHelloSentence(String...name) {
...
}
O apelo a cada elemento será assim: name[0]
Isso te lembra alguma coisa? Isso mesmo, matriz! Nada mudará se escrevermos:
protected void constructHelloSentence(String[] name) {
...
}
O acesso aos elementos também será da forma: name[1]
E mais uma coisa. Os argumentos do método podem ser finais :
public String constructHelloSentence(final String name) {
...
}
Isso significa que a referência do nome está vinculada a um objeto específico String
e não pode ser substituída. final
Você pode ler sobre como trabalhar com variáveis de referência e sua interação com palavras reservadas no material “ Tipos de dados de referência em Java ”.
Métodos de Chamada
Então, resolvemos a criação de métodos, agora vamos falar sobre como usá-los. Como chamar um método em Java?![Métodos em Java - 5](https://cdn.javarush.com/images/article/00ef2ad6-9db6-41bf-87f1-b06e9ab24012/512.jpeg)
public class StringConstructor {
public String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
return resultSentence;
}
}
Como nosso método não é estático (este é um tópico separado para discussão que vai além do escopo do artigo de hoje), para chamá-lo você deve primeiro criar um objeto e depois chamar o método nele:
class Application{
public static void main(String[] args) {
StringConstructor stringConstructor = new StringConstructor();
stringConstructor.constructHelloSentence("Den");
}
}
Nos argumentos do nosso método, passamos a string (nome) que queremos ver na string resultante exibida na tela:
Hello world! My name is Den
Vale lembrar também que os métodos podem ser reutilizados quantas vezes forem necessárias – não há restrições.
esse
Muitas vezes você pode ver a palavra-chave em codethis
, como em setters:
public void setValue(Long value) {
this.value = value;
}
E o que isto quer dizer? this
em Java, esta é uma referência ao objeto atual desta classe. Por exemplo, se criamos um objeto:
StringConstructor stringConstructor = new StringConstructor();
então this
dentro do objeto stringConstructor
haverá um link para o mesmo objeto. this
é usado tanto para se referir a uma variável de objeto (como no setter acima) quanto para chamar algum método. Podemos reescrever um pouco nossa 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 ";
}
}
Através this
chamamos o método deste objeto para obter a string necessária. Mas ainda assim, via de regra, isso quase não é usado para métodos, pois mesmo sem ele há uma referência a um método de um determinado objeto; é usado principalmente para uma variável de objeto.
Sobrecarga de método
Digamos que precisávamos de um método que executasse essencialmente a mesma lógica, mas em um formatoHello world
! em vez disso world
, queremos inserir nossa própria palavra (string). Mas já temos um método constructHelloSentence
. Então, precisamos criar um novo nome para um método que execute essencialmente a mesma funcionalidade? Não importa como seja: neste momento a sobrecarga de métodos vem em nosso auxílio. ![Métodos em Java - 7](https://cdn.javarush.com/images/article/ea01b50d-293a-49db-9a4e-148d2beeee30/512.jpeg)
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;
}
}
Aqui vemos que os métodos não precisam conter o mesmo modificador de acesso (assim como o tipo de retorno). Se um método sobrecarregado for chamado, a partir de vários métodos declarados, o compilador determinará automaticamente o método necessário com base nos parâmetros especificados durante a chamada.
GO TO FULL VERSION