Criando objetos

Como você sabe, uma classe fornece o blueprint para objetos; você cria um objeto de uma classe. Cada uma das seguintes instruções retiradas do programa CreateObjectDemo cria um objeto e o atribui a uma variável:

A primeira linha cria um objeto do Point classe, e cada uma das segunda e terceira linhas criam um objeto da classe Rectangle.

Cada uma dessas instruções tem três partes (discutido em detalhes abaixo):

  1. Declaração: O código definido em negrito são todas as declarações de variáveis que associam um nome de variável a um tipo de objeto.
  2. Instanciação: a nova palavra-chave é um operador Java que cria o objeto.
  3. Inicialização: o novo operador é seguido por uma chamada a um construtor, que inicializa o novo objeto.

Declarando uma variável para referir-se a um objeto

Anteriormente, você aprendeu que para declarar uma variável, você escreve:

type name;

Isso notifica o compilador que você usará name para se referir aos dados cujo tipo é type. Com uma variável primitiva, esta declaração também reserva a quantidade adequada de memória para a variável.

Você também pode declarar uma variável de referência em sua própria linha. Por exemplo:

Point originOne;

Se você declarar originOne assim, seu valor será ser indeterminado até que um objeto seja realmente criado e atribuído a ele. A simples declaração de uma variável de referência não cria um objeto. Para isso, você precisa usar o operador new, conforme descrito na próxima seção. Você deve atribuir um objeto a originOne antes de usá-lo em seu código. Caso contrário, você obterá um erro do compilador.

Uma variável neste estado, que atualmente não faz referência a nenhum objeto, pode ser ilustrada da seguinte forma (o nome da variável, originOne , além de uma referência apontando para nada):

Instanciando uma classe

O novo operador instancia uma classe alocando memória para um novo objeto e retornando uma referência a essa memória. O novo operador também invoca o construtor do objeto.

Nota: A frase “instanciar uma classe” significa o mesmo que “criar um objeto”. Quando você cria um objeto, está criando uma “instância” de uma classe, portanto, “instanciando” uma classe.

O novo operador requer um único argumento postfix: uma chamada para um construtor. O nome do construtor fornece o nome da classe a ser instanciada.

O novo operador retorna uma referência ao objeto que ele criou. Esta referência é geralmente atribuída a uma variável do tipo apropriado, como:

A referência retornada pelo novo operador não tem que ser atribuído a uma variável. Também pode ser usado diretamente em uma expressão. Por exemplo:

int height = new Rectangle().height;

Esta declaração será discutida na próxima seção.

Inicializando um objeto

Aqui está o código para a classe Point:

public class Point { public int x = 0; public int y = 0; //constructor public Point(int a, int b) { x = a; y = b; }}

Esta classe contém um único construtor. Você pode reconhecer um construtor porque sua declaração usa o mesmo nome que a classe e não tem tipo de retorno. O construtor na classe Point leva dois argumentos inteiros, conforme declarado pelo código (int a, int b). A instrução a seguir fornece 23 e 94 como valores para esses argumentos:

Point originOne = new Point(23, 94);

O resultado da execução deste declaração pode ser ilustrada na próxima figura:

Aqui está o código para a classe Rectangle, que contém quatro construtores:

Cada construtor permite que você forneça valores iniciais para a origem, largura e altura do retângulo, usando os tipos primitivos e de referência. Se uma classe tem vários construtores, eles devem ter assinaturas diferentes. O compilador Java diferencia t s construtores com base no número e no tipo dos argumentos. Quando o compilador Java encontra o código a seguir, ele sabe como chamar o construtor na classe Rectangle que requer um argumento Point seguido por dois argumentos inteiros:

 Rectangle rectOne = new Rectangle(originOne, 100, 200);

Isso chama um dos Rectangle “construtores que inicializa origin para originOne. Além disso, o construtor define width como 100 e height como 200.Agora, existem duas referências ao mesmo objeto Point – um objeto pode ter várias referências a ele, conforme mostrado na próxima figura:

A linha de código a seguir chama o construtor Rectangle que requer dois argumentos inteiros, que fornecem o inicial valores de largura e altura. Se você inspecionar o código dentro do construtor, verá que ele cria um novo objeto Point cujos valores xey são inicializados em 0:

Rectangle rectTwo = new Rectangle(50, 100);

O construtor Rectangle usado na instrução a seguir não leva nenhum argumento, então é chamado de construtor sem argumento:

Rectangle rect = new Rectangle();

Todas as classes têm pelo menos um construtor. Se uma classe não declara nenhum explicitamente, o compilador Java fornece automaticamente um construtor sem argumento, chamado de construtor padrão. Este construtor padrão chama o construtor do pai da classe “sem argumento, ou o construtor Object se a classe não tiver outro pai. Se o pai não tiver nenhum construtor (Object tiver um), o compilador rejeitará o programa.

Write a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *