1. 45 Curso de Java
OO: Interfaces e
Herança:
Casting (conversão)
+ instanceOf
2. Conversão de objectos (casting)
• Converter uma subclasse para o tipo superclasse ou vice-versa
• Upcasting e Downcasting
3. 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
6. Upcasting
Aluno aluno = new Aluno();
Pessoa alunoPessoa = aluno; //upcasting
• Geralmente é automático
• Não há necessidade de fazer manual, porém upcasting manual é permitido
12. Problemas Downcasting
Pessoa pessoaAluno = new Pessoa();
Aluno aluno = (Aluno) pessoaAluno;
Exception in thread "main" java.lang.ClassCastException: Pessoa cannot be cast to Aluno
13. 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;
}
14. 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");
}