• Nenhum resultado encontrado

MODIFICADORES DE ACESSO

No documento Java Cederj (páginas 127-133)

Orientação a Objeto

MODIFICADORES DE ACESSO

Algumas vezes, é interessante implementar restrições quanto ao acesso aos elementos da classe. Esses níveis de restrições são implemen- tados por meio do conceito de modifi cadores de acesso.

Existem quatro modifi cadores de acesso em Java: public, priva-

te, protected e default; este último é acionado quando não se escreve

nenhum dos outros modifi cadores de acesso antes das defi nições de classes, atributos ou métodos.

• Quando não é usado nenhum modifi cador de acesso (modifi ca- dor default), os elementos da classe são acessíveis somente pelos métodos internos da classe e das suas subclasses.

• Quando é utilizado o modifi cador de acesso public, os elementos da classe são acessíveis tanto pela própria classe quanto por qualquer classe que tente acessá-los.

• Quando utilizado o modifi cador de acesso protected, os ele- mentos da classe são acessíveis somente por classes no mesmo pacote da classe dos elementos.

• Quando utilizado o modifi cador de acesso private, os elemen- tos da classe são acessíveis somente pela própria classe que os defi niu.

HERANÇA

Herança é uma técnica da Orientação a Objeto cujo objetivo é

criar um modelo com objetos do mundo real. Aqueles objetos que tem características mais genéricas são construídos de forma que os que são mais específi cos possam receber os atributos e métodos dos genéricos sem a necessidade de reescrita de código, aumentando o reúso e facilitando a manutenção.

A herança em Java é defi nida pela palavra reservada extends uti- lizada pela classe que quer herdar as características. A essa classe damos o nome de subclasse. A classe que está sendo utilizada na herança recebe o nome de superclasse.

Veja o exemplo da classe Pessoa e depois da classe Aluno, que herda de Pessoa:

Na classe anterior, defi nimos dois atributos: nome e endereco, e os métodos get, para acessar, e set, para defi nir cada um dos atributos.

AULA

6

Abra sua IDE NetBeans e crie dois pacotes, um chamado cedjava.app e outro chamado cedjava.objetos.

No pacote cedjava.objetos, implemente a classe Pessoa e depois a classe Aluno herdando os dados de Pessoa.

Por fi m, no pacote cedjava.app implemente a classe TesteAluno para testar se a herança funcionou corretamente.

Atividade prática 2

3 2 1 Na classe Aluno, o fato de termos o código extends Pessoa faz com que ela herde todos os atributos e métodos de Pessoa; afi nal, Aluno é um tipo de Pessoa.

Vamos explicar como funciona a lógica de execução do mecanismo de herança por intermédio da classe a seguir:

Quando a classe anterior instancia Aluno, o construtor de Pessoa é invocado e os atributos deste são criados para poderem ser utilizados por Aluno, que herda de Pessoa. Veja que utilizamos os métodos setNo-

me( ) e getNome( ), que não são de Aluno mas de Pessoa; com isso, não

precisamos criar esses métodos em Aluno, pois estamos reutilizando-os através de Pessoa.

5 4

Caso você não consiga fazer ou tenha alguma dúvida em qual- quer uma das atividades, coloque sua dúvida ou seu problema no Fórum, insira a dúvida além do código que está tentando implementar e, se estiver dando algum erro, faça uma cópia da tela numa fi gura e coloque no Fórum. Com certeza algum colega ou o tutor irá ajudar a esclarecer o problema.

Uma observação importante: quanto mais você praticar ou modifi car os exemplos que estamos propondo nas aulas, inclu- sive tentando criar seus próprios exemplos, mais intimidade e facilidade você terá com a linguagem e principalmente com o manuseio das ferramentas utilizadas para programar, com foco principal na IDE NetBeans. Por isso, não deixe de praticar sempre que puder.

POLIMORFISMO

Vamos voltar ao exemplo anterior, no qual temos uma super- classe Pessoa e uma subclasse Aluno herdando de Pessoa. Suponha que tenhamos também uma nova subclasse herdando de Pessoa, a classe

Empregado.

Suponha agora que as três classes tenham um método getNome( ); isso pode ocorrer, visto que eu posso querer que em um determinado momen- to, no meu sistema, o método a ser chamado seja o getNome( ) de alguma das subclasses, pois eles podem executar comportamentos diferentes. Isso é o que chamamos de sobrescrita de métodos. Na execução, a Máquina Virtual Java sempre procura pelos métodos na classe original (subclasse). Caso não os encontre, ela procura na superclasse pelo método com aquele nome referido.

Veja as classes Pessoa, Aluno e Empregado utilizando o conceito de sobrescrita de métodos:

AULA

6

Classe Aluno

Classe Empregado

Nesse caso, para cada objeto que for utilizado será impresso o nome do objeto com sua categoria (Pessoa, Aluno ou Empregado), como você pode observar nesta classe:

Através do NetBeans, no pacote cedjava.objetos, modi- fi que a classe Pessoa e depois a classe Aluno, além de criar a nova classe Empregado, conforme já foi mostrado.

No pacote cedjava.app, implemente a classe TesteAluno2 para testar e entender o conceito de sobrescrita de métodos.

Atividade prática 3

3 2

1 4 5 6

Veja agora outro conceito importante modifi cando um pouco nossa classe TesteAluno2, que foi utilizada para visualizar a sobrescrita de nossos objetos. Para isso, iremos modifi cá-la um pouco.

Vamos criar um atributo do tipo Pessoa, mas sem chamar o cons- trutor com new. Em vez disso, vamos atribuir a referência de Pessoa aos objetos Aluno e Empregado:

Apesar de o atributo ref ser do tipo Pessoa, ao ser impresso o nome por meio dos métodos getNome( ), vimos que a referência ref do tipo

Pessoa aponta para um objeto do tipo Aluno e depois para um objeto

do tipo Empregado, assumindo assim o comportamento destes. Isso é o que chamamos de polimorfi smo.

AULA

6

A capacidade de uma

referência mudar de comportamento de acordo com o objeto a que se refere

é chamada de polimorfi smo.

No documento Java Cederj (páginas 127-133)