• Nenhum resultado encontrado

85Todos os direitos reservados a 3Way Networks

No documento Linguagem Java COMPLETA (páginas 85-87)

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 75

7.5.2 Modificadores de Acesso

7.5.2.1 Público - public

Define que os elementos da classe são acessíveis tanto internamente quanto externamente à classe. Qualquer objeto que interage com a classe pode ter acesso aos elementos públicos a partir de qualquer pacote. Por exemplo:

// Arquivo: SuperclassA.java (1) package packageA;

public class SuperclassA {

public int superclassVarA; // (2)

public void superclassMethodA() {/*...*/} // (3) }

class SubclassA extends SuperclassA {

void subclassMethodA() { superclassVarA = 10; } // (4) OK. }

class AnyClassA {

SuperclassA obj = new SuperclassA(); void anyClassMethodA() {

obj.superclassMethodA(); // (5) OK.

} }

Listagem 7.24 – Definindo classes no pacote A

// Arquivo: SubclassB.java (6) package packageB;

import packageA.*;

public class SubclassB extends SuperclassA {

void subclassMethodB() { superclassMethodA(); } // (7) OK. }

class AnyClassB {

SuperclassA obj = new SuperclassA(); void anyClassMethodB() {

obj.superclassVarA = 20; // (8) OK.

} }

Listagem 7.25 – Definindo classes no pacote B

O exemplo contém dois arquivos fonte, mostrados na Listagem 7.24 e na Listagem 7.45. A hierarquia dos pacotes definidas pelos arquivos está descrita na Figura 7.5, mostrando o packageA e o packageB, dois pacotes que contêm suas respectivas classes. As classes do packageB fazem uso das classes definidas no pacote packageA. A classe SuperclassA do packageA tem duas subclasses: SubclassA no packageA e SubclassB no packageB.

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores.

Figura 7.5 – Visibilidade Pública

Demonstramos acessibilidade pública neste exemplo, onde observa-se o uso do modificador de acesso public para o campo superclassVarA e no método

superclassMethodA() na Listagem 7.24, linha 6 e 7 respectivamente, definidos na

classe SuperclassA. Estes membros podem ser usados por todos os clientes do exemplo, que são:

 Cliente 1: SubclassA (Listagem 7.24, linha 11), a partir da subclasse definida no mesmo pacote, ela tem acesso ao campo herdado.

 Cliente 2: AnyClassA (Listagem 7.24, linha 17), uma classe no mesmo pacote, que tem-um objeto do tipo SuperclassA, pode invocar o método de instância superclassMethodA.

 Cliente 3: SubclassB (Listagem 7.25, linha 6), uma subclasse em outro pacote, que chama o método herdado.

 Cliente 4: AnyClassB (Listagem 7.25, linha 11), uma classe definida em outro pacote, que tem-um objeto do tipo SuperclassA que acessa a variável membro da classe.

7.5.2.2 Protegido – protected

Membro com acessibilidade protegida são acessíveis por todas as classes contidas no mesmo pacote e por todas as subclasses desta classe em qualquer pacote em que a classe seja visível. Em outras palavras, classes que não são subclasses em outros pacotes não podem fazer uso de membros protegidos a partir de outros pacotes. Ele é menos restritivo que o modificador padrão (default ou pacote). Por exemplo, redefinindo os membros da classe

SuperclassA na Listagem 7.24 (linhas 6 e 7), para protected: public class SuperclassA {

protected int superclassVarA; // (2)

protected void superclassMethodA() {/*...*/} // (3) }

Assim, o método anyClassMethodB(), na classe Client4 dentro do pacote packageB não pode acessar o campo superclassVar, também não pode acessar o método superclassMethodA() definidos na classe SuperclassA dentro de packageA, com mostrado na Figura 7.6.

Membro com acessibilidade protegida são acessíveis por todas as classes contidas no

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 12

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores.

87

No documento Linguagem Java COMPLETA (páginas 85-87)

Documentos relacionados