Algumas convenções são comumente adotadas para a programação de classes:
- classes são declaradas com a primeira letra de cada palavra maiúscula (UpperCamelCase): MinhaClasse;
- atributos, variáveis locais e métodos são declarados com a primeira letra da primeira palavra minúscula (lowerCamelCase): meuAtributo, minhaVariavel, meuMetodo;
Uma classe é composta atributos e métodos. Por não possuir uma estrutura ordenada, as classes devem ser criadas seguindo um padrão lógico, para facilitar a legibilidade do programa.
Igualmente, os objetos (ou instâncias de uma classe) possuem atributos e métodos. Estes membros, no entanto, possuem um espaço de memória único para cada instância e sempre que uma nova instância é criada, os procedimentos de inicialização são adotados.
Atributos não precisam ser inicializados e possuem um valor padrão:
- tipos numéricos: valor 0;
- tipo boolean: valor false;
- demais atributos: valor null (referência vazia).
Métodos, por sua vez, acessam ou modificam atributos.Por meio do controle de visibilidade, é possível controlar os níveis de acesso:
- public
- protected
- default
- private
A palavra this é utilizada para referenciamento do objeto atual
Toda classe possui um ou mais métodos construtores, que são chamados para criação dos objetos. Por padrão, um construtor sem parâmetros é criado. Outros construtores podem ser criados, diferenciando-se apenas a lista de parâmetros (sobrecarga), pois todos os construtores possuem o mesmo nome da classe. Quando um construtor com parâmetros for criado, o construtor padrão (sem parâmetros) não é mais acessível.
Atributos e métodos podem ser estáticos.
Atributos estáticos não estão associados a uma instância (atributos de classe), sendo compartilhado por essas, ocupando uma posição única na memória. Normalmente utilizados para constantes.
Métodos estáticos, por sua vez, são acessados diretamente pela classe e não demandam instanciação. Dessa forma, são resolvidos em tempo de compilação, não podendo ser sobrescritos.
Observe que o método Ponto é instanciado. Já o método estático calcNorma não:
As classes em Java podem ser classificadas em internas, abstratas ou finais.
Atributos estáticos não estão associados a uma instância (atributos de classe), sendo compartilhado por essas, ocupando uma posição única na memória. Normalmente utilizados para constantes.
Observe os valores que serão impressos pelo método e note que o atributo é compartilhado entre os objetos c1 e c2:
Métodos estáticos, por sua vez, são acessados diretamente pela classe e não demandam instanciação. Dessa forma, são resolvidos em tempo de compilação, não podendo ser sobrescritos.
Observe que o método Ponto é instanciado. Já o método estático calcNorma não:
As classes em Java podem ser classificadas em internas, abstratas ou finais.
Classes internas são declaradas dentro de outra classe e podem, dessa forma, acessar seus métodos privados. Este tipo específico de classe é utilizado para substituir a estrutura struct.
Classes abstratas tem como principal característica a impossibilidade de ser instanciada. Este tipo de classe define um conjunto de métodos abstratos totalmente implementados ou parcialmente implementados. Neste último caso, a implementação pode ocorrer nas classes derivadas.
Observe o exemplo a seguir e note que o método abstrato setarXY é implementado na classe derivada Ponto2D.
Além disso, tem-se as classes finais, que não podem ser herdadas, o que torna seu comportamento constante. Neste tipo de classe, os atributos operam como constantes e os métodos não podem ser sobrescritos.
Por fim, tem-se as interfaces, que permitem definir um conjunto de métodos que deverão ser implementados por uma classe. Dessa forma, uma interface funciona como um contrato.
Note no exemplo a seguir que a classe Ponto implementa a interface Imprimivel, por meio da implementação do método imprimirValores (definido na interFace).
O quadro a seguir apresenta uma visão geral e comparativa de classes e interface.
Nenhum comentário:
Postar um comentário