45 Curso de Java
OO: Interfaces e
Herança:
Casting (conversão)
+ instanceOf
Conversão de objectos (casting)
• Converter uma subclasse para o tipo superclasse ou vice-versa
• Upcasting e Downcasting
Conversão de objectos (casting)
Aluno aluno = new Aluno();
Object pessoa = aluno;
• Converter uma subclasse para o tipo superclasse ou vice-versa
• Upcasting e Downcasting
Object
Pessoa
Aluno Professor
Upcasting
Downcasting
Upcasting
Aluno aluno = new Aluno();
Pessoa alunoPessoa = aluno; //upcasting
Upcasting
Aluno aluno = new Aluno();
Pessoa alunoPessoa = aluno; //upcasting
• Geralmente é automático
• Não há necessidade de fazer manual, porém upcasting manual é permitido
Upcasting
Pessoa aluno = new Aluno();
Upcasting
Pessoa aluno = new Aluno();
Pessoa aluno = (Pessoa) new Aluno();
é o mesmo que:
Upcasting
Pessoa aluno = new Aluno();
Pessoa aluno = (Pessoa) new Aluno();
é o mesmo que:
Downcasting
Aluno aluno = new Aluno();
Pessoa pessoaAluno = aluno; //upcasting
Aluno aluno2 = (Aluno) pessoaAluno; //downcasting
Problemas Downcasting
Pessoa pessoaAluno = new Pessoa();
Aluno aluno = (Aluno) pessoaAluno;
Problemas Downcasting
Pessoa pessoaAluno = new Pessoa();
Aluno aluno = (Aluno) pessoaAluno;
Exception in thread "main" java.lang.ClassCastException: Pessoa cannot be cast to Aluno
public static void main(String[] args) {
//exemplo 1: OK
//retorno do método pode referenciar String
Object o1 = obterString();
String s1 = (String) o1;
//exemplo 2: OK
//o2 referencia String explicitamente
Object o2 = "Curso de Java";
String s2 = (String) o2;
//exemplo 3: FALHA em tempo de execução
//o3 não referencia String
Object o3 = new Object();
String s3 = (String) o3;
//exemplo 4: FALHA em tempo de compilação
//o4 nunca referencia String já que retorno método é int
Integer o4 = obterInteiro();
//String s4 = (String) o4;
}
public static String obterString(){
return "minha String";
}
public static int obterInteiro(){
return 1;
}
instanceOf
Pessoa pessoa = new Pessoa();
Pessoa aluno = new Aluno();
Pessoa professor = new Professor();
if (pessoa instanceof Pessoa){
System.out.println("Objeto do tipo Pessoa");
}
if (aluno instanceof Aluno){
System.out.println("Objeto do tipo Aluno");
}
if (professor instanceof Professor){
System.out.println("Objeto do tipo Professor");
}
Hands On!
https://github.com/loiane/curso-java-basico
Código Fonte:
Não conhece Git/Github?
http://www.loiane.com/2013/11/
screencast-git-e-github-para-iniciantes
Fórum para dúvidas + certificado do curso.
Cadastro em:
http://loiane.training
<loiane.training/>
http://loiane.com
facebook.com/loianegroner
@loiane
https://github.com/loiane
youtube.com/user/Loianeg
Obrigada!
http://loiane.com

[Curso Java Basico - Orientacao a Objetos] Aula 45: Interfaces e Polimorfismo