Declarações e Controle de Acesso

  • View
    2.470

  • Download
    6

Embed Size (px)

DESCRIPTION

 

Text of Declarações e Controle de Acesso

  • 1. SCJP Declaraes e Controle de Acesso Elenilson Vieira elenilson.vieira.filho@gmail.com
  • 2. Definies Bsicas Um programa Java uma coleo de objetos se comunicando com outros objetos pela invocao de mtodos Classe: descreve um objeto de forma a explicitar seus tipos de comportamento e estado (variveis de instncia) Objeto: a representao, em tempo de execuo, da classe
  • 3. Definies Bsicas Estado (variveis de instncia): Cada objeto ter um nico conjunto de variveis de instncia como descrito em sua classe e elas definiro o seu estado. Comportamento (mtodos): Onde a lgica da classe colocada. So l que os algoritmos so colocados e executados
  • 4. Herana Cdigos 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 so 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 no h qualquer implementao dos mtodos 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 comear com letras, $ ou caractere de ligao (_) No h limites de quantos caracteres um identificador pode conter (achei estranho!) identificadores so sensveis a maiscula e minscula no se pode usar palavras reservadas Ex: _a, $a, ___________2_w, .b, :a, e#.
  • 7. Arquivos Fonte Pode conter apenas uma classe pblica Se h uma classe pblica no arquivo, o nome do arquivo deve ser o mesmo seguido de .java Se a classe faz parte de um pacote, a declarao deve ser a primeira linha antes de qualquer cdigo
  • 8. Arquivos Fonte Declaraes import devem vir entre o local da declarao do package e o incio da classe Declaraes import e package valem para todas as classes declaradas do arquivo de cdigo fonte Um arquivo pode ter mais de uma classe no pblica
  • 9. Modificadores de Acesso Uma classe A pode acessar uma classe B se A pode uma das 3 coisas: Criar uma instncia de B Extender a classe B Acessar determinados mtodos e variveis 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 (no necessrio saber o que strctfp faz, mas saber que um modificador para classe e mtodos, no para variveis).
  • 13. Outros Modificadores de Acesso Final faz com que classes no possam ser especializadas. Usar final no vai contra o conceito de OO? Usa-se final por segurana e apenas quando est certo que nenhum programador precisar extender sua classe.
  • 14. Classes Abstratas Classes abstratas No podem ser instanciadas e sua nica finalidade ser extendida Por que criar uma classe que no pode ser instanciada? Bem, poderamos ter uma classe bem genrica dada como Carro, mas qual o motor desse carro? E o cmbio? Quantos cavalos de potncia? Isso so caractersticas de modelos de carros, ento uma classe BWM pode extender carro e implementar seus mtodos abstratos
  • 15. Classes Abstratas Se h algum mtodo marcado como abstrato, a classe inteira deve ser abstrata Uma classe abstrata pode conter mtodos no abstratos No se pode marcar uma classe como abstract e final
  • 16. Interfaces Pense em uma interface com 100% dos mtodos marcados como abstratos Uma interface pode ter apenas mtodos abstratos Todos os mtodos de uma interface so implicitamente pblicos e abstratos Todas as variveis definidas em uma interface devem ser pblicas, estticas e finais. Se voc no explicitar, elas mesmo assim sero.
  • 17. Interfaces Mtodos de uma interface no podem ser estticos Uma interface no pode extender uma classe mas pode extender uma ou mais interfaces :O (pg 59) Uma interface no pode implementar outra interface Voc pode tipar uma interface como abstract mas redundante public abstract interface Rollable { } public interface Rollable { }
  • 18. Interfaces
  • 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 pblicos 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 prpria classe tem acesso a esses membros Um mtodo private pode sofrer override em uma subclasse?
  • 22. Modificadores de Acesso Protected e Default So quase idnticos, mas h uma pequena e crtica diferena: 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 Variveis Locais Apenas o final aplicado public void a(){ final int c = 10; }
  • 24. Relembrando Mtodos final no podem ser sobrescritos Mtodos abstratos: so mtodos sem implementao Assim? public abstract void vos(); Ou assim? public abstract void lalala(){}
  • 25. Definies Bsicas Estado (variveis de instncia): Cada objeto ter um nico conjunto de variveis de instncia como descrito em sua classe e elas definiro o seu estado. Comportamento (mtodos): Onde a lgica da classe colocada. So l que os algoritmos so colocados e executados
  • 26. Mtodos Synchronized Indicam que o mtodo pode ser acessado por uma nica thread no tempo. public synchronized void c(){}
  • 27. Mtodos Native Indica que o mtodo dependente de plataforma. No necessrio saber como funciona, apenas que um modificador
  • 28. Mtodos strictfp Faz com que seja usado o padro IEE754 para operaes com ponto flutuante (mais preciso e mais velocidade nas operaes
  • 29. Argumentos Variveis Usamos os ; Pode haver outros argumentos mas esses devem vir antes e o var-arg deve vir por ltimo. No 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. No podem ser assinalados como static, final ou abstract. public class Elenilson{ public Elenilson(S