Down Cast na criação de Objeto

5 respostas
R

To com um problema para fazer um down cast na criação de um Objeto.

Vendedor vd2 = new Funcionario (“Maria”, 1700, 29000); <-- Esta dando erro nesse trecho do código.

onde a super classe eh Funcionario e a sub classe eh a Vendedor.

Alguem sabe?

public Vendedor(String nome, double salario, int totalDeVendas)

5 Respostas

danieldomingues86

Olá,

Isso não deve estar nem compilando então…

Se voce disse que super classe é Funcionario e a subclasse vendedor, voce precisa fazer:

Funcionario f = new Vendedor()

E não ao contrário.

Abracos
Daniel.

R

Opa valeu ae Daniel, mais eu estou fazendo um exercício que diz o seguinte: “é possível criar um objeto da superclasse e armazenar a referência em uma variável da subclasse através do processo de coerção explícita (cast down).”

EDIT: Entendi foi erro meu de interpretação! hehehe Obrigado

danieldomingues86

Ok,

Darei um exemplo simples de downcast para voce ter uma ideia de como funciona:

Object o = new Object(); String s = (String) o;

Veja que primeiro foi criada um objeto, e armazenado em uma referencia, e logo em seguida ele foi atribuido a uma segunda referencia que no caso string, sendo que string é um Object, ou seja Object é superclasse de string.

Abracos
Daniel

R

Valeu ae cara!

rmendes08

Fazendo isso você somente está adiando o erro da compilação para a execução. Por exemplo, a atribuição:

String s = (String) new Object();

vai lançar uma ClassCastException. Você não pode referenciar um objeto de uma superclasse por uma variável do tipo de uma subclasse. Você somente pode usar coerção explícita quando tem certeza que o objeto convertido é do tipo da variável, exemplo:

Object o = "testeCoerção";
   String s = (String) o;

Coerção era muito usada antes de generics, pois uma vez que você adicionava objetos em uma coleção, era a única maneira de recuperá-los. Uma outra situação é resolver chamadas ambíguas de métodos sobrecarregados.

Criado 23 de agosto de 2011
Ultima resposta 23 de ago. de 2011
Respostas 5
Participantes 3