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.
 
