Estrutura em Java?

Quem conhece C, C++ ou C# pode sentir falta de um tipo estruturado (struct) em Java. Uma estrutura é um tipo definido pelo programador, que serve para agrupar dados ou até funções.

 

struct estudante {

     int id;

     char *nome;

     float aproveitamento;

}

 

struct estudante est1;

est1.id = 1;

est1.nome = “Ângela”;

est1.aproveitamento = 85.9;

 

 

No C# é possível declarar uma estrutura parecida com uma classe, da seguinte forma:

 

struct Ponto {

     public int x, y;

     public Ponto (int x, int y) {

          this.x = x;

          this.y = y;

     }

}

 

Embora C++ e C# possuam classes, uma estrutura é mais leve, não pode ser herdada de nenhuma classe, e nenhuma classe pode herdar dela. E diferente de uma classe, um tipo estruturado não é uma referência. Então ao executar o código abaixo:

 

Ponto a = new Ponto (20, 15);

Ponto b = a;

a.x = 30;

 

A variável b.x ainda se mantém como 20, enquanto a variável a.x passou para 30. Isso ocorre pois não foi a referência de a que foi passada para b, mas sim uma cópia (valor) da estrutura.

 

Em Java não existem estruturas propriamente ditas, apenas classes (objetos) e tipos primitivos. Uma estrutura pode ser criada como uma classe do tipo final, embora as variáveis associadas sempre serão uma referência:

 

final class Ponto

{

public int x, y;

public Ponto (int x, int y) {

this.x = x;

this.y = y;

}

}

 

...

 

Ponto a = new Ponto (20, 15);

Ponto b = a;

a.x = 30;

System.out.println(“A.x: “ + a.x + “, B.x: “ + b.x);

 

 

A saída do código acima será “A.x: 30, B.x: 30”, pois b foi criado como uma referência à variável a, apontando assim para o mesmo objeto.

Comments