Você está na página 1de 5

Orientação a Objetos - Parte ll http://www.devmedia.com.br/articles/viewcomp_forprint.asp?

comp=5124

www.devmedia.com.br [versão para impressão]

FABIANO DA SILVA FERNANDES

Fabiano da Silva Fernandes (silva.fernandes777@gmail.com) é estudante do curso de Bacharel


em Administração pelo Centro Superior de Ensino Dracena – Campus Jundiaí. Prestou serviço na
área de suporte para empresas do setor financeiro, contábil e educacional. Desempenhou
trabalhos como Web Designer, trabalhou com linguagem Visual Basic, Delphi,, atualmente é
Programador Certificado Sun Java 5.

Orientação a Objetos - Parte ll

Resumo
Continuando sobre o assunto de Orientação a Objetos, falaremos sobre sobrecarga de
métodos, polimorfismo, variáveis de referencias e os demais detalhes que você
precisará saber para a prova SCJP 1.5.

Sobrecarga e Sobrescrita de método.


Método Sobrescrito são métodos declarados com mesmo nome em sua classe ou em
suas subclasses, mas com algumas características:
lista de argumentos iguais.
mesmo tipo de retorno (isso inclui retorno covariantes).
nível de acesso mais restritivo
não pode sobrescrever método static e marcado com final
não pode sobrescrever métodos private, ou seja, se ele não poder ser herdado,
não pode ser subscrito.
não pode pode lançar exceções checadas novas mais abrangentes.
pode lançar qualquer exceção não-checadas, independente do método novo ou
antigo declarar ou não a exceção.

Métodos Sobrecarregados são métodos que tem o mesmo nome, mas com argumentos
diferentes, eles possuem estas características:
lista de argumentos diferentes;
podem alterar o tipo de retorno;
podem alterar o modificador de acesso;
declarar exceções verificadas novas ou mais abrangentes;

Não confunda métodos sobrescritos com sobrecarregados, com certeza eles testaram
você para saber seus conhecimentos nisso.
Agora que você já sabe as regras para sobrescrita e sobrecarga de um método, iremos
falar agora de Polimorfismo.

Variável de Referencia
A única maneira de acessar um objeto é usando uma variável de referência, um detalhe
muito importante que você deve saber é que a variável de referência pode se referir a
qualquer subtipo do objeto declarado.

Lembra daquela semântica que foi dito sobre herança? “É UM”. Então podemos tratar
um objeto da classe filha como se fosse um objeto da classe pai.
Veja nesta Figura 01 de um código que já foi usado.

1 de 5 24/11/2010 00:45
Orientação a Objetos - Parte ll http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=5124

Figura 01.

De acordo com este código podemos dizer que:


EsporteRadical esp = new Skate( );

Este código é totalmente permitido, pois afinal de contas Skate é um EsporteRadical.

Mas se fizéssemos ao contrário? Se tentássemos passar um objeto da classe pai a uma


variável da classe filho? Caso isso ocorra o compilador irá “gritar” a JVM irá lançar um
Exception.

Para que o compilador não “grite” em nossos ouvidos é necessário fazer um


downcasting, informando-o qual objeto está debaixo da árvore da herança, veja.
Skate sk8 = (Skate) esp;

Polimorfismo
A primeira coisa que deve vir a sua cabeça quando se trata de polimorfismo é herança,
ela tem que estar bem definido para que você possa entender o conceito, ou seja,
quando a classe B herda de uma classe A, todos os membros (varáveis de instância e
métodos) públicos ou protegidos de A passa a fazer parte de B. Usando outra
abordagem é dizer que polimorfismo é usado usar um tipo genérico de variáveis de
referencia para apontar para tipos de objetos mais específicos.

Vamos ver na prática como tudo funciona, olhe na Figura 02.

2 de 5 24/11/2010 00:45
Orientação a Objetos - Parte ll http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=5124

3 de 5 24/11/2010 00:45
Orientação a Objetos - Parte ll http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=5124

Figura 2.

Veja que usamos alguns conceitos apresentados até agora, vimos herança, que é
fundamental pra que haja o polimorfismo, onde as classes Filha01 e Filha02 herdou as
variáveis de instancia e métodos públicos da sua classe pai. Houve o uso correto de
herança de construtores, e houve o uso correto do uso de variáveis de instância, onde
tratamos um objeto da classe filha como se fosse um objeto da classe pai, à partir daí
iniciá-se o polimorfismo.

Interface
Para o exame você precisará saber como implementar o uso correto de uma Interface,
mas primeiro você precisa saber o que é uma Interface.
Interface é um contrato, onde você estará concordando em fornecer implementações
válidas de cada método definido na Interface e que qualquer pessoa que souber como
são os métodos da interface poderá chama-los na instância de uma classe que a
implemente.

Uma Interface não pode implementar nenhuma classe, somente pode estender outra
interface, e uma classe não estende uma Interface, mas sim à implementa, e podendo
implementar quantas Interfaces desejar.

A classe não abstrata que implementar uma Interface deve declarar todos seus métodos
não declarados. Lembrem-se todos os métodos das Interfaces são implicitamente
públicos, então quando declará-los você precisará indicar explicitamente.

Variáveis e métodos static.


O que você precisa saber é que variáveis e métodos marcados com static pertencem a
classe, ou seja, você pode usá-los sem uma variável de instancia.

Você nunca poderá acessar um variável não static de um método static, preste muita
atenção pois ele te testarão.

Outro ponto que você deve lembrar é que métodos static não podem ser
sobrecarregados. Porem eles podem ser redefinidos.

Retorno Covariantes
A partir de Java 1.5 você tem a possibilidade de modificar o tipo de retorno de um
método, porém existe uma regra para que isso possa acontecer.
Você pode retornar null em um método que tenha como tipo de retorno a
referencia a um objeto.
Em método com tipo de retorno primitivo, você pode retornar qualquer valor ou
variável que possa ser implicitamente convertido para o tipo de retorno declarado,
e qualquer valor que possa ser explicitamente convertido.
Você pode retornar um array.
Você pode retornar um objeto que passa pela semântica “É UM”, ou seja, um
objeto que possa ser implicitamente convertido para o tipo retornado.
E algo fundamental que você precisa saber é que métodos declarado como void
não deve retornar NADA.

Acoplamento e Coesão
A definição de acoplamento e coesão é subjetivo para a definição do exame, mas o que
você terá que saber é que uma boa estrutura de projetos Orientados a Objetos exige
um acoplamento fraco e uma alta coesão. Mas o que é isso?

Acoplamento é o grau que uma classe depende, interage com outra classe. E coesão
refere a finalidade que a classe foi criada.

Então quanto mais uma classe não depender de outra, isso significa que ela tem o baixo

4 de 5 24/11/2010 00:45
Orientação a Objetos - Parte ll http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=5124

acoplamento, e o maior a especialização dela, isso significa alta coesão, você estará
seguindo os princípios da Orientação a Objetos.

www.devmedia.com.br/articles
/viewcomp.asp?comp=5124

5 de 5 24/11/2010 00:45

Você também pode gostar