1. Modificadores de acesso

Antes de cada método, os programadores podem especificar os chamados modificadores de acesso. Isso inclui as seguintes palavras-chave: public, protected, private.

Esses modificadores de acesso permitem restringir o acesso de outras classes a um método.

Por exemplo, se você escrever a privatepalavra-chave antes de uma declaração de método, o método só poderá ser chamado da mesma classe em que foi declarado. A publicpalavra-chave permite acesso ao método marcado de qualquer método de qualquer classe.

Há um total de 3 desses modificadores, mas há 4 tipos de acesso a um método. Isso ocorre porque a ausência de um modificador de acesso também significa algo.

Acesso de...
Modificadores qualquer classe classe infantil seu pacote sua classe
public Sim Sim Sim Sim
protected Não Sim Sim Sim
sem modificador Não Não Sim Sim
private Não Não Não Sim

1. publicmodificador

Um método (ou variável ou classe) marcado com o publicmodificador pode ser acessado de qualquer lugar no programa . Este é o mais alto grau de abertura - não há restrições.

2. privatemodificador

Um método (ou variável, ou classe) marcado com o privatemodificador só pode ser acessado a partir da mesma classe onde foi declarado . Para todas as outras classes, o método marcado (ou variável) é invisível. É como se não existisse. Este é o nível mais alto de restrição - apenas sua própria classe.

3. Sem modificador (modificador padrão)

Se um método (ou variável) não estiver marcado com nenhum modificador, então é considerado como tendo o 'modificador padrão'. Variáveis ​​ou métodos com esse modificador (ou seja, sem nenhum) são visíveis para todas as classes no pacote em que são declaradas . E só a eles. Às vezes, esse modificador também é chamado package-private, sugerindo que o acesso a variáveis ​​e métodos é aberto a todo o pacote no qual sua classe está localizada.

4. protectedmodificador

Se um método for marcado com o protectedmodificador, ele poderá ser acessado a partir da mesma classe, do mesmo pacote e descendentes (classes que herdam a classe na qual o método é declarado). Analisaremos esse tópico com mais detalhes na missão Java Core.

Você pode usar o publicmodificador em todos os seus métodos (bem como em todas as suas classes e variáveis ​​de classe) até chegar ao final da missão Java Syntax. Você precisará dos outros modificadores quando começarmos a aprender OOP ativamente.

Por que os modificadores de acesso são necessários?

Eles se tornam necessários para grandes projetos escritos por dezenas e centenas de programadores ao mesmo tempo.

Às vezes, há situações em que um programador deseja dividir um método excessivamente grande em partes e mover parte do código para métodos auxiliares. Mas, ao mesmo tempo, ele ou ela não quer que outros programadores chamem esses métodos auxiliares, porque o código correspondente pode não funcionar corretamente.

Então eles criaram esses modificadores de acesso. Se você marcar um método auxiliar com a palavra private , nenhum código além de sua classe poderá ver seu método auxiliar.



2. staticpalavra-chave

A staticpalavra-chave torna um método estático. Veremos o que isso significa mais tarde. Por enquanto, apenas lembre-se de alguns fatos sobre métodos estáticos.

Fato 1. Um método estático não é anexado a nenhum objeto , mas pertence à classe na qual é declarado. Para chamar um método estático, você precisa escrever:

ClassName.MethodName()

Exemplos de métodos estáticos:

Nome da classe Nome do método estático
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

O nome da classe antes do nome de um método estático pode ser omitido se você chamar o método estático de dentro de sua classe. É por isso que você não precisa escrever Solutionantes dos nomes de cada um dos métodos estáticos que são chamados.

Fato 2. Um método estático não pode acessar os métodos não estáticos de sua própria classe. Um método estático só pode acessar métodos estáticos. Como resultado, declaramos todos os métodos que queremos chamar do mainmétodo estático.

Por que? Você mesmo poderá responder a essa pergunta quando começar a aprender OOP e entender como os métodos estáticos funcionam.



3. throwspalavra-chave

Há outra palavra-chave que você provavelmente já viu em uma declaração de método — a throwspalavra-chave. Ao contrário dos modificadores de acesso e da staticpalavra-chave, esta palavra-chave é colocada após os parâmetros do método:

public static Type name(parameters) throws Exception
{
  method body
}

Consideraremos seu significado preciso um pouco mais tarde, quando estudarmos as exceções.

Mas para tocar superficialmente, podemos dizer que um método marcado com a palavra-chave throws pode lançar erros (exceções), ou seja, instâncias da Exception classe (e classes que a herdam). Se vários tipos diferentes de erros podem ocorrer em uma classe, você precisa listar cada um deles separados por vírgulas.


4. mainmétodo

A linha onde um método é declarado, que contém todos os modificadores, afetará como esse método é chamado de outras classes e métodos. Afeta o tipo de resultado que o método retornará e indica quais erros são possíveis durante a execução.

Essa linha é chamada de declaração de método e tem o seguinte formato geral:

access modifier static Type name(parameters) throws exceptions
Formato geral de uma declaração de método

Onde access modifiers é substituído por public, protected, privateou nada;

se o método for estático, a staticpalavra-chave aparecerá (está ausente para métodos não estáticos)

Typeé o tipo do valor de retorno ( voidse não houver resultado)

Agora você provavelmente entende o que todas as palavras-chave significam na declaração do mainmétodo:

public static void main(String[] args) throws Exception
Declarando o mainmétodo

O acesso ao main()método é possível a partir de qualquer classe, conforme indicado pela publicpalavra-chave.

O método é estático, portanto pode ser chamado explicitamente como Solution.main().

O mainmétodo não retorna nenhum resultado. O tipo de retorno é void(sem tipo).

O mainmétodo usa argumentos (!): uma matriz de strings. E o nome do parâmetro argssugere 'argumentos' para nossas mentes. Quando o programa inicia, você pode passar argumentos — um array de strings. Eles estarão contidos na args matriz do main()método.

Erros não tratados como Exception(ou seus descendentes) podem ocorrer no main()método.