Beruflich Dokumente
Kultur Dokumente
Capítulo 1
Declarações e Controle de Acesso
Sumário
1. Revisão de Java
•Classe, objeto, estado e comportamento.
•Identificadores e palavras-chave
•Herança
•Interfaces
2. Identificadores Legais
• Identificadores Legais
•Convenções de código Java SUN
•Padrões Java Beans
•Regras de nomeação de Listeners JavaBeans
3. Declaração de classe
•Regras de declaração para arquivos-fonte
•Declarações e modificadores de classe
Sumário
4. Declaração de interface
•Declarando uma interface
•Declarando constantes de interface
5. Declaração de Membros de classe
•Modificadores de acesso
•Modificadores não-referentes a acesso
•Declaração de construtores
•Declaração de variáveis
6. Declarando Enums
•Declaração de construtores, métodos e variações em um enum
7. Resumos e exercícios rápidos
Revisão de Java
Classe: é um modelo que descreve os tipos de estado e comportamento que
objetos do mesmo tipo podem ter.
Objeto: instância de uma classe, ou seja é criado no runtime possuindo estado e
comportamento definidos pelo seu tipo. É uma abstração que representa uma
entidade que pode ser física, conceitual ou de software.
Estado (variáveis de instância): Cada objeto terá o seu conjunto único de variáveis
de instâncias definido pela sua classe. Todos os valores atribuídos às variáveis de
instância compõem o estado do objeto.
Revisão de Java
Identificadores: são os nomes de classes, variáveis e métodos. Existem regras
dizendo como devem ser os identificadores Java permitidos.
Herança: é uma propriedade dos objetos, que permite ao código (características do
objeto) definido em uma classe ser reutilizado em outras classes. Define-se uma
superclasse geral e depois a estende com subclasses mais específicas.
Interface: É uma espécie de superclasse 100% abstrata que define os métodos que
uma subclasse deve suportar. Não há implementação de métodos na superclasse.
Identificadores Legais
Regras que o compilador usa pra determinar se um nome é válido.
Identificadores Legais
Exemplos:
Palavras-chave
Ex.: CruzeiroTitulos;
Cachorro;
Conta.
Padrões JavaBeans
O que é JavaBeans?
• São classes Java que tem propriedades. Essa especificação foi criada para
ajudar desenvolvedores a criarem componentes Java que possam ser
usados por outros desenvolvedores.
Padrões JavaBeans
• Para completar o nome de um método getter ou setter, deve-se mudar a
primeira letra do nome da propriedade p/ maiúscula e depois juntar a ela
o prefixo adequado.
• As assinaturas de métodos setter devem ser marcadas como public, com o
tipo de retorno void e um argumento que represente o tipo da
propriedade.
• As assinaturas de métodos getter devem ser marcadas como public, não
usar argumentos e ter um tipo de retorno que combine com o tipo do
argumento do método setter para propriedade em questão.
Padrões JavaBeans
• Nomes de métodos Listeners usados p/ remover um listener, devem usar
o prefixo remove.
Ex: removeActionListener();
Declaração de classe
Regras de declaração para arquivos-fonte:
Declaração de classe
Regras de declaração para arquivos-fonte:
Modificadores de Acesso
Os modificadores estão divididos em 2 grupos:
Class MinhaClasse();
Acesso a Classes
Uma Classe A tem acesso (vê) classe B, se:
• Criar uma instância de B;
• Estender a classe B (tornar-se uma subclasse de B);
• Acessar métodos e variáveis dentro de B (depende do controle das
mesmas).
Tipos de acesso:
Acesso Default: quando uma classe não possui modificador ela possui acesso
default. Uma classe desse tipo só pode ser vista por classes do mesmo pacote.
Acesso Público: uma classe declarada como pública dá acesso a todas classes de
todos pacotes, acesso à mesma, para instanciá-la e estendê-la, lembrando que se a
classe estiver em um pacote diferente, deve-se importar o devido pacote.
Acesso a Classes
Outros modificadores de classe:
• strictfp, final e abstract;
• Podem ser combinados com os modificadores de acesso (nunca usar
abstract e final juntos);
• Strictfp é uma palavra-chave e que pode ser usada para modificar uma
classe ou método, mas nunca uma variável. Significa que qualquer código
de método de classe se conformará às regras do padrão IEEE 754 p/
pontos flutuantes.
Classes Finais: quando usada significa que a classe em questão não poderá ser
subclassificada (herdada) e gera erro de compilação.
Declaração de Interface
Uma classe interface é um contrato que diz para outras classes (subclasses), que
queiram herdá-la, quais métodos DEVEM ser implementados para isso.
Regras:
• Todos os métodos de interface são implicitamente public e abstract.
• Todas as variáveis definidas em uma interface devem ser public, static ou
final (só se pode declarar constantes).
• Os métodos de interface não podem ser static.
• Já que os métodos são abstract, não podem ser final, native, stricfp ou
synchronized.
• Uma interface pode estender uma ou mais interfaces diferentes.
• Uma interface não pode estender nada que não seja outra interface.
• Uma interface não pode implementar outra interface ou classe;
• Uma interface deve ser declarada com a palavra-chave interface.
Declaração de Interface
• Tipos de interface podem ser usados poliformicamente.
Observação: pelo fato das constantes serem definidas em uma interface, elas não
precisam ser declaradas como public, static ou final. Você não precisa declarar
explicitamente.
Membros private: não podem ser acessados por código em nenhuma outra classe
que não aquela qual o membro foi declarado.
• Métodos Final: não pode ser sobrescrito. Mas lembre-se é válido estender uma
classe não marcada como final, mas não podemos sobrescrever seus métodos
final.
• Métodos abstract: o que você precisa prestar atenção é que métodos abstract
não possuem implementação em seus métodos, isso significa que eles devem ser
implementados, ou seja, eles nem se quer tem chaves, ao invés disso ele terminam
com ponto-e-vírgula. Em outras palavras, ela não tem um corpo de método.
• Métodos synchronized: esses métodos só podem ser acessados por uma thread
de cada vez. Iremos abordar esse tipo de método no assunto referente a Thread, o
que você precisa saber é que esses métodos podem ter qualquer um dos quatros
modificadores de acesso. Só é aplicado a métodos.
Grupo de Estudos para a Certificação Java Programmer – Exame CX-301-065
Grupo de Estudos para a Certificação Java Programmer – Exame CX-301-065
• Métodos strictfp: esse modificador pode ser usado tanto para métodos como em
classes, mas nunca deve ser usado em variáveis, você não precisa saber
exatamente como ele funciona, mas ele força os pontos flutuantes a aderirem o
padrão IEEE 754.
Argumento: Aquilo que você especifica entre parênteses quando está invocando
um método.
Ex: doStuff(“a”, 2);
Parâmetro: Aquilo na assinatura de um método que indica o que o método deve
receber quando for invocado.
Ex: void doStuff(String s, int a) { }
Regras:
• Deve especificar o tipo do var-arg;
• Depois do tipo usa-se reticências (...), um espaço, e o nome do array que irá
armazenar os parâmetros;
• Podemos ter outros parâmetros não-var-args;
• Só pode haver um var-arg e deve ser o último na assinatura do método;
Grupo de Estudos para a Certificação Java Programmer – Exame CX-301-065
Grupo de Estudos para a Certificação Java Programmer – Exame CX-301-065
Declaração de construtores
Regras:
Declaração de variáveis
Variáveis primitivas: Char, boolean, byte, short, int, long, float e double;
• Variáveis de referência são usadas para referir um objeto, de um tipo
específico que não pode ser alterado.
• Intervalo de tipos primitivos. Ordem: byte, short, int, long, float e double.
Tipos de variáveis:
• Variáveis de instância: são definidas no corpo da classe, e são inicializadas quando a classe
é instanciada. Elas podem receber qualquer um dos três modificadores de acesso, portanto
podem possuir qualquer dos quatros níveis de acesso. Podem ser marcadas como final e
transient, mas não podem ser marcadas como abstract, synchronized, strictfp, native e
static.
• Variáveis locais: são aquelas declaradas dentro de um método, ou seja, o tempo de vida de
uma variável local é o tempo em que o método está em execução. Um detalhe importante
que você precisa saber é que variáveis locais precisam ser inicializadas com um valor antes
de ser usada.
Declaração de variáveis
• Variáveis final: impossibilitam a reutilização desta variável depois que ela tiver sido
inicializada com valor explícito. Para primitivos, isso significa que o valor não pode ser
alterado, tratando-se de variável de referência ela não pode ser reatribuída a um objeto
diferente. Os dados dentro do objeto podem ser alterados mas a referência não.
• Variáveis transient: significa que você estar informado a JVM para ignorar esta variável
quando você for serializar o objeto que a contém. Mais detalhes no capítulo 6 sobre
Serialização.
• Variáveis volatile: o que ela significa você não precisa saber para o exame, mas o que você
deve saber é que ela se aplica somente a variáveis de instância. Mais detalhes no capítulo 9
sobre Threads.
• Variáveis e métodos static: são usados para criar variáveis e métodos que irão existir
independente da instância da classe. Você pode marcar como static: métodos, variáveis,
bloco de inicialização e classes aninhadas. Você não pode marcar como static: construtores,
classes, métodos de classes internas e variáveis locais e de instância.
Grupo de Estudos para a Certificação Java Programmer – Exame CX-301-065
Grupo de Estudos para a Certificação Java Programmer – Exame CX-301-065
Declaração de Arrays
Regras de declaração de Arrays:
Declarando Enums
Um ENUM especifica uma lista de valores constante que podem ser atribuídos a
um determinado tipo. É usada para restringir as possibilidades de atribuição. Com
seu uso podemos garantir que o compilador impedirá atribuições absurdas.
Declarando Enums
Construtores ENUM:
• Jamais será possível invocar diretamente um construtor ENUM
• É possível definir mais de um argumento para o construtor, bem como
sobrecarregar o construtor ENUM.
• Um ENUM tem um método estático chamado values(). Esse método
retorna um array dos valores do ENUM em ordem de declaração.
Exercícios rápidos
1- Qual das seguintes afirmativas está correta (Marque todas as corretas)?
A. “X extends Y” é correto se, e somente se, X for uma classe e Y uma interface.
B. “X extends Y” é correto se, e somente se, X for uma interface e Y for uma
classe.
C. “X extends Y” é correto se X e Y forem ambos classes ou ambos interfaces.
D. “X extends Y” é correto para todas as combinações de X e Y sendo classes
e/ou interfaces.
Resposta: C
Exercícios rápidos
2- Dado:
class Voop{
public static void main (String [] args){
façaAlgo(1);
façaAlgo(1,2);
}
// insira um código aqui
}
Exercícios rápidos
Qual destas opções, inseridas indepedentemente na linha 6, irá compilar?
(Marque todas as corretas)
Exercícios rápidos
3- Quais nomes de métodos obedecem o padrão JavaBeans? (Marque todas as
corretas)
A. addSize
B. getCusto
C. deleteRep
D. isColorado
E. putDimensions
Resposta: B e D.
Exercícios rápidos
4- Dado o código:
interface Dispositivo{
public void facaAlgo (); }
Exercícios rápidos
Qual é o resultado? (Marque todas as corretas)
A. A compilação é bem-sucedida.
B. Ocorre uma falha na compilação com um erro na linha 1
C. Ocorre uma falha na compilação com um erro na linha 3
D. Ocorre uma falha na compilação com um erro na linha 5
E. Ocorre uma falha na compilação com um erro na linha 7
F. Ocorre uma falha na compilação com um erro na linha 9
Resposta: A
Exercícios rápidos
5- Dado o código:
Exercícios rápidos
Qual é o resultado? (Marque todas as corretas)
A. Ter
B. Qua
C. Não é possível prever o resultado (a saída é inalcançável)
D. Ocorre uma falha na compilação com um erro na linha 3
E. Ocorre uma falha na compilação com um erro na linha 5
F. Ocorre uma falha na compilação com um erro na linha 7
G. Ocorre uma falha na compilação com um erro na linha 9
Resposta: B. Cada ENUM tem um método static values() que retorna um array
dos valores do ENUM na ordem em que forem declarados no ENUM.