Programação orientada a objetos: a classe Object

object_attribute_assignment

Continuamos com o nosso curso de programação , este artigo irá falar sobre uma classe muito especial, a classe Object. Essa classe em Java é caracterizada principalmente porque todas as classes Java e tudo o que herdamos dessa classe, ou seja, são subclasses dessa classe. Temos que a classe Object é uma superclasse de todas as classes da linguagem Java.

Consequências da classe Object

As principais conseqüências resultantes da classe Object ser a superclasse de todas as outras são que, em qualquer atributo definido com um tipo de objeto, ele pode ser inicializado com qualquer tipo. Por exemplo, se tivermos o seguinte código:

public class Ej {
public static void main(String[] args) {
    Object objeto;

    atributo = 1;
    System.out.println(objeto);
    atributo = "casa";
    System.out.println(objeto);
}
}

O atributo do objeto pode ser inicializado com qualquer valor, ou seja, o objeto pode ser atribuído a qualquer outro objeto, qualquer que seja o objeto, o mesmo fornece um objeto Farm como um objeto de lista inteira. Adicionaremos as seguintes linhas ao nosso método principal :

atributo = new int[10];
System.out.println(atributo);
atributo = new String[10];
System.out.println(atributo);

Se observarmos a saída que ela fornece, é uma saída ilegível, porque quando usamos a função System.out.println (…) ou semelhante, o que fazemos é exibir um método da classe Object.

Principais métodos da classe Object

A classe Object traz uma série de métodos que em alguns casos são complicados de usar e que, em muitos casos, usá-los é causa de um design inadequado. Entre os mais importantes e os que possivelmente usaremos mais estão:

  • O método equals () é usado para comparar se dois objetos são iguais. Este método retorna true se os objetos forem iguais ou false se não forem. Entendemos o mesmo que os objetos que mantêm o mesmo estado interno (caracterizado pelo valor de seus atributos), não um específico.

  • O método getClass () retorna uma representação em tempo de execução da classe do objeto. Este método retorna um objeto Class com o qual mais informações sobre o tipo do objeto podem ser obtidas.

  • O método toString () retorna uma sequência de texto que representa o objeto. Esse método geralmente é usado para duas coisas: compare dois objetos com essa saída ou mostre essa saída ao usuário.

Redefinindo nossa classe Farm

Você adivinha que método é esse? Sempre que chamamos a função System.out.println (…) ou similar, chamamos o método toString () dessa classe. Se, por exemplo, adicionarmos as seguintes linhas ao nosso método:

atributo = new Granja("Granja guay");
System.out.println(atributo);

Teremos uma saída semelhante a:

Fazenda @ 15db9742

Isso acontece porque não redefinimos o método toString () da nossa classe Farm, estamos usando diretamente o método da classe Object e esse método não sabe como imprimir o estado do nosso objeto de atributo. Para redefini-lo, vamos para a classe Farm e adicionamos:

@Override
public String toString() {
 return nombre;
}

Nós o redefinimos assim, basta retornar o nome de nossa fazenda, se mais tarde precisarmos de mais o adicionarmos, por enquanto não estamos interessados. Se executarmos, veremos como funciona bem:

Fazenda legal

Também redefiniremos o método equals para:

@Override
public boolean equals(Object obj) {
    if (obj instanceof Granja) {
        Granja tmp = (Granja) obj;
        return tmp.nombre == this.nombre;
    } else {
        return false;
    }
}

Se testarmos o método adicionando as seguintes linhas ao nosso principal :

Granja g2 = new Granja("Granja guay");
System.out.println(g2.equals(atributo));
Granja g3 = new Granja("Granja no guay");
System.out.println(g3.equals(atributo));

Teremos os seguintes resultados:

Verdadeiro

False

Portanto, percebemos que, redefinindo o método, teremos que comparar dois objetos de farm, se forem iguais, se o atributo name for exatamente o mesmo . Isso não é muito comum, eles geralmente usam mais de um atributo, mas, para este exemplo, ele funciona.

Como sempre, aqui temos o nosso código fonte .

Relacionado:  Estruturas de dados de rede: os gráficos
 

Você pode estar interessado:

Deixe um comentário