Buscar

07_-_Heranca_02_-_Protected_e_Polimorfismo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Thiago Rodrigues POO 1
Membros Protected
• Para assegurar a reutilização e ocultação de informação na O.O., o uso de
membros protegidos é essencial;
class JConta {
protected int numero;
}
class JConta2 extends JConta {
public void SetNum(int x){
numero = x;
}
}
• Membro protegidos podem ser acessados pelos métodos da
superclasse, da subclasse e por qualquer método no mesmo pacote
(acesso do pacote);
Thiago Rodrigues POO 2
Herança Pública x Herança Privada
• Quando métodos public e protected são herdados por uma subclasse,
qual será a seção de destino destes métodos?
• A orientação à objetos define dois tipos de herança que determina qual
será a seção de cada método herdado;
public void SuPublic()
{ ... }
protected void SubProtected()
{ ... }
public void SuPublic()
{ ... }
protected void SubProtected()
{ ... }
pública
public void SuPublic()
{ ... }
protected void SubProtected()
{ ... }
private void SuPublic()
{ ... }
private void SubProtected()
{ ... }
privada
Thiago Rodrigues POO 3
Polimorfismo dos Objetos
• Objetos podem instancializar qualquer subclasse na hierarquia de
classes, se comportando como uma classe especializada;
SuperCl obj = new SubCl();
• A restrição á que o objeto de uma superclasse tem o acesso restrito aos
métodos da subclasse
public class JCad {
String nome;
int idade;
public int getIdade()
{ return idade; }
public void setIdade(int idade)
{ this.idade = idade; }
public String getNome()
{ return nome; }
public void setNome(String
nome)
{ this.nome = nome;}
}
public class JAluno extends JCad{
int RA;
String curso;
public String getCurso()
{ return curso; }
public void setCurso(String curso)
{ this.curso = curso; }
public int getRA()
{ return this.RA; }
public void setRA(int RA)
{ this.RA = RA; }
}
Thiago Rodrigues POO 4
public class JMain {
public static void main(String[] 
args){
JCad obj;
obj = new JAluno();
obj.setNome(“José");
obj.setIdade(20);
obj.setRA(720000);
} }
JCad
JAluno
Casting de Objetos
• As regras para o cast de objetos são as mesmas que as regras do
polimrofismo de objetos;
• Um objeto de uma superclasse pode ser convertido para um objeto de
uma subclasse, entretanto o oposto não é válido;
• Para que a conversão seja válida o objeto da superclasse deve estar
instancializado à subclasse em questão;
• Verificação na execução;
Thiago Rodrigues POO 5
public class JMain {
public static void main(String[] args){
JCad obj;
obj = new JAluno();
obj.setNome("José");
obj.setIdade(20);
((JAluno) obj).setRA(720000);
} 
}
public class JMain {
public static void main String[] args){
JCad obj;
obj = new JCad();
obj.setNome("José");
obj.setIdade(20);
((JAluno) obj).setRA(720000);//ERRO
} }

Continue navegando