1. Criando um objeto
Bem, chegamos à criação de objetos. Você já encontrou isso antes, mas agora analisaremos esse tópico com mais detalhes. Na verdade, é muito fácil criar objetos.
Para criar um objeto, você precisa usar o operador new . A criação de um objeto é mais ou menos assim:
new Class(arguments)
Depois de criar um objeto, geralmente salvamos imediatamente uma referência a ele em uma variável, que geralmente compartilha o mesmo tipo do objeto criado. Isso significa que, ao criar um objeto, você geralmente vê um código como este:
Class name = new Class(arguments)
Onde é a criação de uma nova variável, e o código à direita do sinal de igual é a criação de um novo objeto cujo tipo é .Class name
Class
Exemplos:
Código | Observação |
---|---|
|
Criar um Object objeto |
|
Criar um Cat objeto |
|
Criar um Scanner objeto |
Os programadores geralmente nomeiam variáveis após suas classes, mas com uma letra minúscula. Para um programador iniciante, esse código pode ser confuso:
Código |
---|
|
|
|
Não há nada de errado com este código — este é o código mais comum, no qual uma variável é criada e imediatamente inicializada por um objeto do mesmo tipo.
À esquerda do sinal de igual temos a criação de uma variável. À direita, a criação de um objeto. É isso.
2. Construtor
Você provavelmente já viu que alguns argumentos são frequentemente passados ao criar um objeto. Além do mais, os argumentos são passados para alguns objetos, mas não para outros. Como funciona todo esse mecanismo com argumentos?
Aqui também tudo é simples: cada classe tem um método (ou métodos) especial que são responsáveis por tratar os argumentos passados ao criar um objeto. Esses métodos são chamados de construtores . Ou quando estamos falando de apenas um: o construtor .
É fácil distinguir um método construtor de um método regular. Este método tem duas características distintivas:
- o nome de um construtor é o mesmo que o nome de sua classe (e começa com uma letra maiúscula)
- um construtor não tem tipo de retorno.
Em geral, aqui está o que geralmente parece:
modifiers Class(arguments)
{
Code
}
Exemplo:
Código | Observação |
---|---|
|
Point Point construtor de classe |
|
Crie um objeto da Point classe. O construtor da classe será chamado. |
Observe a aparência do construtor: ele não tem tipo de retorno e seu nome é igual ao nome da classe.
E mais uma coisa: dê uma olhada no código dentro do construtor. Os parâmetros do construtor têm os mesmos nomes dos campos da classe: x e y. É prática padrão evitar criar novos nomes de parâmetros. Os nomes são os mesmos dos campos da classe. O conflito de nomes é resolvido usando a palavra-chave this.
3. Chamando um construtor
Ao usar o operador new e um comando como "new Class ( argumentos )" para criar um novo objeto, duas coisas acontecem:
- A máquina Java cria um objeto cujo tipo é Class
- A máquina Java chama o construtor do objeto e passa seus argumentos
Como programador, você decide quais construtores sua classe deve ter e quais parâmetros esses construtores devem ter.
Suponha que você decida criar uma classe para rastrear gatos em um abrigo de animais. Então sua Cat
classe pode ficar assim:
|
|
|
isso é permitido |
|
Mas isso não é permitido Este código não será compilado. |
|
E isso não é permitido. Este código não irá compilar. |
A Cat
classe tem apenas um construtor com os parâmetros name e age. Como não há outros construtores, você deve passar o nome do gato ( name
) e a idade ( age
) como argumentos ao criar um objeto. Passar argumentos para o construtor não é opcional .
4. Múltiplos construtores
Mas se precisar, você pode adicionar vários construtores à classe. Não há limite para o número de construtores ou seus parâmetros. Quando você cria um objeto, o compilador seleciona automaticamente o construtor que corresponde aos parâmetros
Código | Observação |
---|---|
|
|
|
Isso é permitido: o primeiro construtor será chamado |
|
Isso é permitido: o segundo construtor será chamado |
|
Mas isso não é permitido Este código não será compilado. |
Decidimos levar em conta o fato de que a idade de um gato pode não ser conhecida. Para lidar com esse caso, adicionamos a constante especial UNKNOWN
junto com um construtor que possui apenas um parâmetro — o nome do gato.
Observe que ainda inicializamos ambas as variáveis dentro de ambos os construtores. Substituímos os parâmetros desconhecidos/ausentes pela constante UNKNOWN
.
Se nenhum valor for atribuído à variável idade, ela terá o valor padrão de 0. Afinal, um gatinho encontrado na rua pode muito bem ter 0 anos completos. Isso significa que um zero na variável idade não significa necessariamente "idade desconhecida".
5. Construtor padrão
Se você deseja que seus objetos sejam instanciados sem nenhum parâmetro, sua classe precisa declarar um construtor sem argumentos.
Um construtor sem parâmetros não é necessariamente um construtor sem código. Esse construtor pode conter código que inicializa variáveis com valores iniciais:
Código | Observação |
---|---|
|
|
|
Isso é permitido: o primeiro construtor será chamado |
|
Isso é permitido: o segundo construtor será chamado |
Construtor padrão
Há um ponto muito importante que você deve saber e lembrar.
Se sua classe não declarar um construtor , o compilador adicionará um construtor padrão, que é um construtor sem argumentos com o modificador público.
Mas se sua classe declarar pelo menos um construtor , nenhum construtor padrão será adicionado e você precisará adicioná-lo você mesmo, se desejar.
Código | Observação |
---|---|
|
|
|
Isso é permitido: o construtor padrão será chamado |
GO TO FULL VERSION