SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
SCJP
Declarações e Controle de Acesso




                              Elenilson Vieira
           elenilson.vieira.filho@gmail.com
Definições Básicas

 
   Um programa Java é uma coleção de objetos se
 comunicando com outros objetos pela invocação de
 métodos

 
   Classe: descreve um objeto de forma a explicitar seus
 tipos de comportamento e estado (variáveis de
 instância)

 
   Objeto: a representação, em tempo de execução, da
 classe
Definições Básicas

 
  Estado (variáveis de instância): Cada objeto terá um
 único conjunto de variáveis de instância como descrito
 em sua classe e elas definirão o seu estado.

 
  Comportamento (métodos): Onde a lógica da classe
 é colocada. São lá que os algoritmos são colocados e
 executados
Herança

 
  Códigos definidos em uma classe podem ser reusados
 em outras classes. Uma subclasse tem que
 explicitamente declarar que está herdando de uma
 superclasse mas uma superclasse nem sabe quem são
 suas herdeiras
 class A{
   public int x = 10;
 }
 class B extends A{
   public void b(){
     System.out.println(x);
   }
 }
Interface

 
   De certa forma elas atuam como superclasses mas não
 há qualquer implementação dos métodos e estes devem
 ser implementados pelas classes que implementam a
 interface.

 Public interface A{
   public void a();
 }
 public class B implements A{
   public void a{}
 }
Identificadores Legais

 
     Devem começar com letras, $ ou caractere de ligação (_)
 
   Não há limites de quantos caracteres um identificador
 pode conter (achei estranho!)
 
   identificadores são sensíveis a maiúscula e minúscula
 
   não se pode usar palavras reservadas

 Ex: _a, $a, ___________2_w, .b, :a, e#.
Arquivos Fonte

 
     Pode conter apenas uma classe pública

 
   Se há uma classe pública no arquivo, o nome do
 arquivo deve ser o mesmo seguido de “.java”

 
  Se a classe faz parte de um pacote, a declaração deve
 ser a primeira linha antes de qualquer código
Arquivos Fonte

 
   Declarações import devem vir entre o local da
 declaração do package e o início da classe

 
   Declarações import e package valem para todas as
 classes declaradas do arquivo de código fonte

 
     Um arquivo pode ter mais de uma classe não pública
Modificadores de Acesso

 
  Uma classe A pode acessar uma classe B se A pode
 uma das 3 coisas:
  
    Criar uma instância de B
  
    Extender a classe B
  
    Acessar determinados métodos e variáveis dentro
    da classe B
Modificadores de Acesso: Default

 
   Dá acesso apenas a classes que estejam dentro do
 pacote

 package cert;
 class Beverage { }

 package exam.stuff;
 import cert.Beverage;
 class Tea extends Beverage { }

 Can't access class cert.Beverage. Class or interface must be
 public, in same package, or an accessible member class.
 import cert.Beverage;
Modificadores de Acesso: Public

 
     Dá acesso a todas as outras classes que tentarem

 package eu;
 public class A{}

 package B;
 import eu.A;
 public class B{
   A a = new A();
 }
Outros Modificadores de Acesso

 
     Final

 
     Abstract

 
  Strictfp (não é necessário saber o que strctfp faz, mas
 saber que é um modificador para classe e métodos, não
 para variáveis).
Outros Modificadores de Acesso

 
    Final faz com que classes não possam ser
 especializadas. Usar final não vai contra o conceito de
 OO?

 
  Usa-se final por segurança e apenas quando está certo
 que nenhum programador precisará extender sua
 classe.
Classes Abstratas

 
   Classes abstratas
   
     Não podem ser instanciadas e sua única finalidade é
     ser extendida
 
     Por que criar uma classe que não pode ser
 instanciada? Bem, poderíamos ter uma classe bem
 genérica dada como Carro, mas qual o motor desse
 carro? E o câmbio? Quantos cavalos de potência? Isso
 são características de modelos de carros, então uma
 classe BWM pode extender carro e implementar seus
 métodos abstratos
Classes Abstratas

 
   Se há algum método marcado como abstrato, a classe
 inteira deve ser abstrata

 
   Uma classe abstrata pode conter métodos não
 abstratos

 
     Não se pode marcar uma classe como abstract e final
Interfaces

 
  Pense em uma interface com 100% dos métodos
 marcados como abstratos

 
     Uma interface pode ter apenas métodos abstratos

 
    Todos os métodos de uma               interface    são
 implicitamente públicos e abstratos

 
   Todas as variáveis definidas em uma interface devem
 ser públicas, estáticas e finais. Se você não explicitar,
 elas mesmo assim serão.
Interfaces

 
     Métodos de uma interface não podem ser estáticos

 
   Uma interface não pode extender uma classe mas
 pode extender uma ou mais interfaces :O (pág 59)

 
     Uma interface não pode implementar outra interface

 
   Você pode tipar uma interface como abstract mas é
 redundante
 public abstract interface Rollable { }
 public interface Rollable { }
Interfaces
Modificadores de Acesso

 
     Default, public, protected, private

 
  Classes podem usar apenas default e public mas
 membros podem usar os 4
Modificadores de Acesso

 
     Membros públicos
     
       Significa que todas as outras classes tem acesso a
       esse membro seja usando o (.) ou extends
Modificadores de Acesso

 
     Membros private
     
       Significa que apenas a própria classe tem acesso a
       esses membros

 
   Um método private pode sofrer override em uma
 subclasse?
Modificadores de Acesso

 
     Protected e Default
     
       São quase idênticos, mas há uma pequena e crítica
       diferença: no default os membros podem ser
       acessados apenas dentro do pacote e o protected é
       igual ao default mas suas subclasses podem acessar
       mesmo estando fora do pacote
     package tu;
     public class A{
       void a(){}
     }

     package nos;
     public class B extends A{
       void b(){
          a();
       }
     }
Relembrando

 
     Variáveis Locais
     
       Apenas o final é aplicado
     …
     public void a(){
         final int c = 10;
     }
Relembrando

 
     Métodos final não podem ser sobrescritos

 
     Métodos abstratos: são métodos sem implementação


 Assim? public abstract void vos();

 Ou assim? public abstract void lalala(){}
Definições Básicas

 
  Estado (variáveis de instância): Cada objeto terá um
 único conjunto de variáveis de instância como descrito
 em sua classe e elas definirão o seu estado.

 
  Comportamento (métodos): Onde a lógica da classe
 é colocada. São lá que os algoritmos são colocados e
 executados
Métodos Synchronized

 
  Indicam que o método pode ser acessado por uma
 única thread no tempo.

 public synchronized void c(){}
Métodos Native

 
  Indica que o método é dependente de plataforma. Não
 é necessário saber como funciona, apenas que é um
 modificador
Métodos strictfp

 
   Faz com que seja usado o padrão IEE754 para
 operações com ponto flutuante (mais precisão e mais
 velocidade nas operações
Argumentos Variáveis

 
   Usamos os …; Pode haver outros argumentos mas
 esses devem vir antes e o var-arg deve vir por último.
 Não pode ter mais de um var-arg

 Sintaxe:
 void a(int... x); // Legal
 void b(char c, int... y); // legal
 void c(int... u, String a);//Ilegal
 void d(int u...);//Ilegal
Construtores

 
   Devem ter o mesmo nome da classe e JAMAIS ter
 tipo de retorno. Não podem ser assinalados como
 static, final ou abstract.

 public class Elenilson{
   public Elenilson(String nome){}
 }
Variáveis Primitivas

 
  Podem ser de 8 tipos e podem ser declaradas como
 variáveis de classe, de instância, argumentos de
 métodos e variáveis locais

 
   Não é necessário saber calcular a faixa dos tipos mas
 saber que os tipos inteiros na sequencia são byte, short,
 int, long e os de ponto flutuante são float e double

 
  Os tipos tem sinais e o bit mais a esquerda indica se é
 positivo ou negativo (1 e 0) e os outros indicam o
 valor.
Variáveis Primitivas
Variáveis de Instância

 
   São declarados dentro da classe mas fora de qualquer
 método. São inicializadas apenas na instanciação da
 classe
Variáveis Locais

 
   Tem seu tempo de vida no início do método e são
 destruídas no término do métodos. Não pode ter
 modificadores de acesso e podem ser apenas
 assinaladas como final

 public void a(){
   int x = 10;
 }
Variáveis
Arrays

 
     São objetos
         Int x[];
         int[] y = new int[10];

 
     Pode-se declarar arrays multidimensionais
         int a[][][];
         char[] b[];
Final, Transient, Volatile e Static

 
     Variáveis final
     
       não podem ter seus valores alterados. Final pode ser
       usado para classes, métodos e variáveis

 
     Variáveis e métodos static
     
       São pertencentes às classes            e    existem
       independentemente da instanciação
Final, Transient, Volatile e Static
Final, Transient, Volatile e Static

 
     Variáveis transiente
     
       indica para a JVM não salvar o valor de uma
       variável em uma serialização

 
     Volatile:
     
       Indica para a JVM que sempre que precisar
       consultar o valor da variável que a busque na cópia
       principal (não use a cópia do registrador como
       otimização)
Enum

 
  Restringe variáveis a um número fechado de valores
 que são definidos pelo programador

 enum CoffeeSize { BIG, HUGE, OVERWHELMING };
 CoffeeSize cs = CoffeeSize.BIG
Enum
Enum
Perguntas?
Obrigado!


Elenilson Vieira
elenilson.vieira.filho@gmail.com

Contenu connexe

Tendances

Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Java Básico :: Modificadores de acesso
Java Básico :: Modificadores de acessoJava Básico :: Modificadores de acesso
Java Básico :: Modificadores de acessoWesley R. Bezerra
 
Aula 4 acessibilidade
Aula 4   acessibilidadeAula 4   acessibilidade
Aula 4 acessibilidadeDanilo Alves
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceArthur Emanuel
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosLudimila Monjardim Casagrande
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – IIGabriel Faustino
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 

Tendances (20)

Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Aula4
Aula4Aula4
Aula4
 
Java Básico :: Modificadores de acesso
Java Básico :: Modificadores de acessoJava Básico :: Modificadores de acesso
Java Básico :: Modificadores de acesso
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
 
Aula 4 acessibilidade
Aula 4   acessibilidadeAula 4   acessibilidade
Aula 4 acessibilidade
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Aula 1 5
Aula 1 5Aula 1 5
Aula 1 5
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Variáveis
VariáveisVariáveis
Variáveis
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
7194099-Manual-de-Java
7194099-Manual-de-Java7194099-Manual-de-Java
7194099-Manual-de-Java
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Reflections
ReflectionsReflections
Reflections
 

En vedette (7)

Lista2
Lista2Lista2
Lista2
 
Programacao em java
Programacao em javaProgramacao em java
Programacao em java
 
Tutorial javac
Tutorial javacTutorial javac
Tutorial javac
 
Java interface gráfica layouts
Java   interface gráfica layoutsJava   interface gráfica layouts
Java interface gráfica layouts
 
POO - Aula 04 - Introdução a classes e objetos
POO - Aula 04 - Introdução a classes e objetosPOO - Aula 04 - Introdução a classes e objetos
POO - Aula 04 - Introdução a classes e objetos
 
Introdução ao Java Swing (Interface)
Introdução ao Java Swing (Interface)Introdução ao Java Swing (Interface)
Introdução ao Java Swing (Interface)
 
Java interface gráfica swing
Java   interface gráfica swingJava   interface gráfica swing
Java interface gráfica swing
 

Similaire à SCJP Declarações e Controle de Acesso

UFCG.JCert Reunião 1 - Declarações e Controle de Acesso
UFCG.JCert Reunião 1 - Declarações e Controle de AcessoUFCG.JCert Reunião 1 - Declarações e Controle de Acesso
UFCG.JCert Reunião 1 - Declarações e Controle de AcessoAnderson Ledo
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – IIIGabriel Faustino
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e ComposiçãoDenis L Presciliano
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens PooInfogenius
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Sérgio Souza Costa
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Seminário sobre GO
Seminário sobre GOSeminário sobre GO
Seminário sobre GOgptavares
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)Mario Sergio
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 

Similaire à SCJP Declarações e Controle de Acesso (20)

UFCG.JCert Reunião 1 - Declarações e Controle de Acesso
UFCG.JCert Reunião 1 - Declarações e Controle de AcessoUFCG.JCert Reunião 1 - Declarações e Controle de Acesso
UFCG.JCert Reunião 1 - Declarações e Controle de Acesso
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – III
 
Java11
Java11Java11
Java11
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e Composição
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Refatorações
RefatoraçõesRefatorações
Refatorações
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
03 fundamentos java
03 fundamentos java03 fundamentos java
03 fundamentos java
 
Java
JavaJava
Java
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Seminário sobre GO
Seminário sobre GOSeminário sobre GO
Seminário sobre GO
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Final e aastract
Final e aastractFinal e aastract
Final e aastract
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Java2
Java2Java2
Java2
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 

Plus de Elenilson Vieira (20)

Aulão de JPA com Tomaz Lavieri
Aulão de JPA com Tomaz LavieriAulão de JPA com Tomaz Lavieri
Aulão de JPA com Tomaz Lavieri
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
JavaEE
JavaEEJavaEE
JavaEE
 
JavaME no Mercado Mobile
JavaME no Mercado MobileJavaME no Mercado Mobile
JavaME no Mercado Mobile
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Apresentação da Doom
Apresentação da DoomApresentação da Doom
Apresentação da Doom
 
Palestra sobre a Sun
Palestra sobre a SunPalestra sobre a Sun
Palestra sobre a Sun
 
Apresentação da RedeSoft
Apresentação da RedeSoftApresentação da RedeSoft
Apresentação da RedeSoft
 
Java Collections - Tomaz Lavieri
Java Collections - Tomaz LavieriJava Collections - Tomaz Lavieri
Java Collections - Tomaz Lavieri
 
A Sun no Meio Acadêmico - IESP/FatecPB
A Sun no Meio Acadêmico - IESP/FatecPBA Sun no Meio Acadêmico - IESP/FatecPB
A Sun no Meio Acadêmico - IESP/FatecPB
 
Mini-Curso de Sockets no Unipê
Mini-Curso de Sockets no UnipêMini-Curso de Sockets no Unipê
Mini-Curso de Sockets no Unipê
 
JavaME
JavaMEJavaME
JavaME
 
Concorrência com Java
Concorrência com JavaConcorrência com Java
Concorrência com Java
 
Programas Acadêmicos da Sun no Unipê
Programas Acadêmicos da Sun no UnipêProgramas Acadêmicos da Sun no Unipê
Programas Acadêmicos da Sun no Unipê
 
Mundo Livre e Aberto
Mundo Livre e AbertoMundo Livre e Aberto
Mundo Livre e Aberto
 
JavaME - Aula 2
JavaME - Aula 2JavaME - Aula 2
JavaME - Aula 2
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Apostila JavaME
Apostila JavaMEApostila JavaME
Apostila JavaME
 
Threads
ThreadsThreads
Threads
 
Sincronização - Glêdson Elias
Sincronização - Glêdson EliasSincronização - Glêdson Elias
Sincronização - Glêdson Elias
 

Dernier

5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfRavenaSales1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxLusGlissonGud
 

Dernier (20)

5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 

SCJP Declarações e Controle de Acesso

  • 1. SCJP Declarações e Controle de Acesso Elenilson Vieira elenilson.vieira.filho@gmail.com
  • 2. Definições Básicas  Um programa Java é uma coleção de objetos se comunicando com outros objetos pela invocação de métodos  Classe: descreve um objeto de forma a explicitar seus tipos de comportamento e estado (variáveis de instância)  Objeto: a representação, em tempo de execução, da classe
  • 3. Definições Básicas  Estado (variáveis de instância): Cada objeto terá um único conjunto de variáveis de instância como descrito em sua classe e elas definirão o seu estado.  Comportamento (métodos): Onde a lógica da classe é colocada. São lá que os algoritmos são colocados e executados
  • 4. Herança  Códigos definidos em uma classe podem ser reusados em outras classes. Uma subclasse tem que explicitamente declarar que está herdando de uma superclasse mas uma superclasse nem sabe quem são suas herdeiras class A{ public int x = 10; } class B extends A{ public void b(){ System.out.println(x); } }
  • 5. Interface  De certa forma elas atuam como superclasses mas não há qualquer implementação dos métodos e estes devem ser implementados pelas classes que implementam a interface. Public interface A{ public void a(); } public class B implements A{ public void a{} }
  • 6. Identificadores Legais  Devem começar com letras, $ ou caractere de ligação (_)  Não há limites de quantos caracteres um identificador pode conter (achei estranho!)  identificadores são sensíveis a maiúscula e minúscula  não se pode usar palavras reservadas Ex: _a, $a, ___________2_w, .b, :a, e#.
  • 7. Arquivos Fonte  Pode conter apenas uma classe pública  Se há uma classe pública no arquivo, o nome do arquivo deve ser o mesmo seguido de “.java”  Se a classe faz parte de um pacote, a declaração deve ser a primeira linha antes de qualquer código
  • 8. Arquivos Fonte  Declarações import devem vir entre o local da declaração do package e o início da classe  Declarações import e package valem para todas as classes declaradas do arquivo de código fonte  Um arquivo pode ter mais de uma classe não pública
  • 9. Modificadores de Acesso  Uma classe A pode acessar uma classe B se A pode uma das 3 coisas:  Criar uma instância de B  Extender a classe B  Acessar determinados métodos e variáveis dentro da classe B
  • 10. Modificadores de Acesso: Default  Dá acesso apenas a classes que estejam dentro do pacote package cert; class Beverage { } package exam.stuff; import cert.Beverage; class Tea extends Beverage { } Can't access class cert.Beverage. Class or interface must be public, in same package, or an accessible member class. import cert.Beverage;
  • 11. Modificadores de Acesso: Public  Dá acesso a todas as outras classes que tentarem package eu; public class A{} package B; import eu.A; public class B{ A a = new A(); }
  • 12. Outros Modificadores de Acesso  Final  Abstract  Strictfp (não é necessário saber o que strctfp faz, mas saber que é um modificador para classe e métodos, não para variáveis).
  • 13. Outros Modificadores de Acesso  Final faz com que classes não possam ser especializadas. Usar final não vai contra o conceito de OO?  Usa-se final por segurança e apenas quando está certo que nenhum programador precisará extender sua classe.
  • 14. Classes Abstratas  Classes abstratas  Não podem ser instanciadas e sua única finalidade é ser extendida  Por que criar uma classe que não pode ser instanciada? Bem, poderíamos ter uma classe bem genérica dada como Carro, mas qual o motor desse carro? E o câmbio? Quantos cavalos de potência? Isso são características de modelos de carros, então uma classe BWM pode extender carro e implementar seus métodos abstratos
  • 15. Classes Abstratas  Se há algum método marcado como abstrato, a classe inteira deve ser abstrata  Uma classe abstrata pode conter métodos não abstratos  Não se pode marcar uma classe como abstract e final
  • 16. Interfaces  Pense em uma interface com 100% dos métodos marcados como abstratos  Uma interface pode ter apenas métodos abstratos  Todos os métodos de uma interface são implicitamente públicos e abstratos  Todas as variáveis definidas em uma interface devem ser públicas, estáticas e finais. Se você não explicitar, elas mesmo assim serão.
  • 17. Interfaces  Métodos de uma interface não podem ser estáticos  Uma interface não pode extender uma classe mas pode extender uma ou mais interfaces :O (pág 59)  Uma interface não pode implementar outra interface  Você pode tipar uma interface como abstract mas é redundante public abstract interface Rollable { } public interface Rollable { }
  • 19. Modificadores de Acesso  Default, public, protected, private  Classes podem usar apenas default e public mas membros podem usar os 4
  • 20. Modificadores de Acesso  Membros públicos  Significa que todas as outras classes tem acesso a esse membro seja usando o (.) ou extends
  • 21. Modificadores de Acesso  Membros private  Significa que apenas a própria classe tem acesso a esses membros  Um método private pode sofrer override em uma subclasse?
  • 22. Modificadores de Acesso  Protected e Default  São quase idênticos, mas há uma pequena e crítica diferença: no default os membros podem ser acessados apenas dentro do pacote e o protected é igual ao default mas suas subclasses podem acessar mesmo estando fora do pacote package tu; public class A{ void a(){} } package nos; public class B extends A{ void b(){ a(); } }
  • 23. Relembrando  Variáveis Locais  Apenas o final é aplicado … public void a(){ final int c = 10; }
  • 24. Relembrando  Métodos final não podem ser sobrescritos  Métodos abstratos: são métodos sem implementação Assim? public abstract void vos(); Ou assim? public abstract void lalala(){}
  • 25. Definições Básicas  Estado (variáveis de instância): Cada objeto terá um único conjunto de variáveis de instância como descrito em sua classe e elas definirão o seu estado.  Comportamento (métodos): Onde a lógica da classe é colocada. São lá que os algoritmos são colocados e executados
  • 26. Métodos Synchronized  Indicam que o método pode ser acessado por uma única thread no tempo. public synchronized void c(){}
  • 27. Métodos Native  Indica que o método é dependente de plataforma. Não é necessário saber como funciona, apenas que é um modificador
  • 28. Métodos strictfp  Faz com que seja usado o padrão IEE754 para operações com ponto flutuante (mais precisão e mais velocidade nas operações
  • 29. Argumentos Variáveis  Usamos os …; Pode haver outros argumentos mas esses devem vir antes e o var-arg deve vir por último. Não pode ter mais de um var-arg Sintaxe: void a(int... x); // Legal void b(char c, int... y); // legal void c(int... u, String a);//Ilegal void d(int u...);//Ilegal
  • 30. Construtores  Devem ter o mesmo nome da classe e JAMAIS ter tipo de retorno. Não podem ser assinalados como static, final ou abstract. public class Elenilson{ public Elenilson(String nome){} }
  • 31. Variáveis Primitivas  Podem ser de 8 tipos e podem ser declaradas como variáveis de classe, de instância, argumentos de métodos e variáveis locais  Não é necessário saber calcular a faixa dos tipos mas saber que os tipos inteiros na sequencia são byte, short, int, long e os de ponto flutuante são float e double  Os tipos tem sinais e o bit mais a esquerda indica se é positivo ou negativo (1 e 0) e os outros indicam o valor.
  • 33. Variáveis de Instância  São declarados dentro da classe mas fora de qualquer método. São inicializadas apenas na instanciação da classe
  • 34. Variáveis Locais  Tem seu tempo de vida no início do método e são destruídas no término do métodos. Não pode ter modificadores de acesso e podem ser apenas assinaladas como final public void a(){ int x = 10; }
  • 36. Arrays  São objetos Int x[]; int[] y = new int[10];  Pode-se declarar arrays multidimensionais int a[][][]; char[] b[];
  • 37. Final, Transient, Volatile e Static  Variáveis final  não podem ter seus valores alterados. Final pode ser usado para classes, métodos e variáveis  Variáveis e métodos static  São pertencentes às classes e existem independentemente da instanciação
  • 39. Final, Transient, Volatile e Static  Variáveis transiente  indica para a JVM não salvar o valor de uma variável em uma serialização  Volatile:  Indica para a JVM que sempre que precisar consultar o valor da variável que a busque na cópia principal (não use a cópia do registrador como otimização)
  • 40. Enum  Restringe variáveis a um número fechado de valores que são definidos pelo programador enum CoffeeSize { BIG, HUGE, OVERWHELMING }; CoffeeSize cs = CoffeeSize.BIG
  • 41. Enum
  • 42. Enum