Baixe o app para aproveitar ainda mais
Prévia do material em texto
Modificadores de Acesso Prof. Ramon Pontes Modificadores de Acesso • O modo como você declara suas classes, métodos e variáveis afeta drasticamente o comportamento do seu código. • Por exemplo, um método public pode ser acessado a partir de um código que esteja rodando em qualquer parte da sua aplicação. No entanto se você marcar esse método como private ele desaparecerá de todos os radares, exceto o da classe em que foi declarado. 2 Modificadores de Acesso • Public – Acesso a qualquer classe em qualquer pacote. • Sem modificador(default) – Acesso a qualquer classe do mesmo pacote. • Protected – Acesso a qualquer classe do mesmo pacote e a sub-classes de outros pacotes. • Private – Sem acesso fora da classe. 3 Modificadores de Acesso Classe1 int a; public int b; protected int c; private int e; Classe2 SubClasse1 Package1 Package2Package3 Classe1 int a; public int b; protected int c; private int e; Classe2 SubClasse1 Package1 4 Modificadores de Acesso • O que significa o fato do código de uma classe ter acesso a outra classe ? • É possível criar uma instância dessa Classe • Estender essa classe (Tornar-se uma sub- classe) • Acessar métodos e variáveis dessa classe (Dependendo do controle de acesso desse métodos e variáveis). 5 Formas para acesso a classe • Existem 3 formas para acesso a métodos: – (D) Invocando método declarado na mesma classe – (R) Invocando um método usando uma referência da classe – (I) Invocando um método herdado. 6 SportCar goFast(){} doStuff(){} D Notação Convertible doThings(){ SportCar sc = new SportCar(); R sc.goFast(); } doMore(){ I goFast(); } Driver doDriveStuff(){ SportCar car = new SportCar(); car.goFast(); Convertible con = new Convertible(); Com.goFast(); } 7 Modificadores de Acesso • Public – Quando um método ou variável é declarado como public, isso significa que todas as outras classes, independente do pacote ao qual pertençam, pode acessar o membro em questão. 8 Modificadores de Acesso • Public É possível???? 9 Modificadores de Acesso • Private – Membros marcados como private não podem ser acessados por código em nenhuma outra classe que não seja aquela na qual o membro foi declarado. 10 Modificadores de Acesso • Private 11 Modificadores de Acesso • Private – E se uma subclasse tentasse herdar um membro private da sua superclasse???? • Resposta: NÃO, quando um membro é declarado privado nem mesmo subclasses podem herdar dele. 12 SportCar goFast(){} doStuff(){} D Notação Convertible doThings(){ SportCar sc = new SportCar(); R sc.goFast(); } doMore(){ I goFast(); } Driver doDriveStuff(){ SportCar car = new SportCar(); car.goFast(); Convertible con = new Convertible(); Com.goFast(); } Os Métodos agora são Privados 13 Modificadores de Acesso • Default – Só pode ser acessado se a classe que o estiver acessando pertencer ao mesmo pacote. 14 Modificadores de Acesso • Default Esse código compila ? 15 Modificadores de Acesso • Protected – Pode ser acessado se a classe que estiver acessando pertencer ao mesmo pacote ou for subclasse de um outro pacote. 16 Modificadores de Acesso • Protected 17 Modificadores de Acesso • Uma curiosidade Nunca acesse um método protected utilizando uma referência . Erro de compilação 18 Revisão 19
Compartilhar