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