Modificadores de Classes (Não Referentes à Acesso)


No post anterior falamos dos modificadores de acesso a classes. Hoje iremos tratar dos modificadores de classes que não são referentes a acesso, os quais são: final, abstract e stricfp. Os três podem ser aplicados em adição aos controles de acesso. Por exemplo, é possível declarar uma classe como public e final.
Também é possível utilizar mais de um modificador não referente a acesso na mesma declaração. Por exemplo, é possível declarar uma classe como final e strictfp. Entretanto, existem algumas exceções, como por exemplo, não é possível declarar uma classe como final e abstract, já que possuem funções opostas, como veremos a seguir.

Modificador não referente a acesso final:

Uma declaração de classe com o modificador final significa que essa classe não pode ser herdada ou estendida por outra classe, e nenhum de seus métodos poderão ser sobrescritos.
Como citei anteriormente, a palavra-chave final pode ser combinada com qualquer modificador de acesso, ou seja, uma classe pode ter acesso default ou público e ser também marcada como final.

package bebida;

public final class Refrigerante {  //púlica e final
           
}


package bebida.brasil;

import bebida.Refrigerante;

/* erro de compilação - a classe Coca não pode herdar
 * de Refrigerante pq esta está marcada como final */
public class Coca extends Refrigerante { 

}


Modificador de não-acesso abstract:

Uma classe declarada com o modificador abstract nunca poderá ser instanciada, sua função é ser herdada. Uma classe abstrata pode conter métodos abstratos e não abstratos.
Observação1: se uma classe possuir um método abstrato, esta também deverá ser obrigatoriamente abstrata.
Observação2: métodos abstratos não devem conter chaves { } no final da declaração, no lugar devem apresentar ponto-e-vírgula, pois não apresentam corpo de método.
Observação3: classes que herdarem de classes abstratas deverão implementar os métodos abstratos definidos na classe abstrata.


public abstract class Carro {  /* abstrata - não pode
   * ser instanciada */

      int ano;
     
      /* classes abstratas podem conter métodos
       * não abstratos */
      public void ligar() {
           
      }
     
      /* um único método abstrato declarado torna
       * obrigatoriamente a classe abstrata - métodos
 * abstratos não possuem corpo de método */
      public abstract void acelerar();
     
}


public class Civic extends Carro { 

      public void acelerar() {
            /* classes abstratas não podem ser
             * instanciadas */
            Carro carro = new Carro();
      }
     
}


Modificador de não-acesso strictfp:

A palavra-chave strictfp pode ser usada para modificar uma classe ou método, mas nunca uma variável.
Uma classe com o modificador strictfp significa que seus membros devem seguir o padrão IEEE 754 para pontos flutuantes.


0 comentários:

Postar um comentário