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 private
palavra-chave antes de uma declaração de método, o método só poderá ser chamado da mesma classe em que foi declarado. A public
palavra-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. public
modificador
Um método (ou variável ou classe) marcado com o public
modificador pode ser acessado de qualquer lugar no programa . Este é o mais alto grau de abertura - não há restrições.
2. private
modificador
Um método (ou variável, ou classe) marcado com o private
modificador 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. protected
modificador
Se um método for marcado com o protected
modificador, 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 public
modificador 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. static
palavra-chave
A static
palavra-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 Solution
antes 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 main
mé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. throws
palavra-chave
Há outra palavra-chave que você provavelmente já viu em uma declaração de método — a throws
palavra-chave. Ao contrário dos modificadores de acesso e da static
palavra-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. main
mé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
Onde access modifiers
é substituído por public
, protected
, private
ou nada;
se o método for estático, a static
palavra-chave aparecerá (está ausente para métodos não estáticos)
Type
é o tipo do valor de retorno ( void
se não houver resultado)
Agora você provavelmente entende o que todas as palavras-chave significam na declaração do main
método:
public static void main(String[] args) throws Exception
main
método
O acesso ao main()
método é possível a partir de qualquer classe, conforme indicado pela public
palavra-chave.
O método é estático, portanto pode ser chamado explicitamente como Solution.main()
.
O main
método não retorna nenhum resultado. O tipo de retorno é void
(sem tipo).
O main
método usa argumentos (!): uma matriz de strings. E o nome do parâmetro args
sugere '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.
GO TO FULL VERSION