Pergunta

É necessário que uma classe abstrata tenha pelo menos um método abstrato?

Foi útil?

Solução

O assunto deste post e o corpo fazem duas perguntas diferentes:

  1. Deveria ter pelo menos um membro abstrato?
  2. É necessário ter pelo menos um membro abstrato?

A resposta para o #2 é definitivamente não.

A resposta para o número 1 é subjetiva e uma questão de estilo. Pessoalmente, eu diria que sim. Se sua intenção é impedir que uma classe (sem métodos abstratos) seja instanciada, a melhor maneira de lidar com isso é com um privateprotected construtor, não marcando abstract.

Outras dicas

Não, não é necessário. Você vê isso frequentemente de volta em "Método de modelo" padrão de design, como HttpServlet, em que cada método já tem comportamento padrão definido e você está livre para substituir apenas um (ou mais) deles em vez de tudo deles.

No JDK 1.0, era realmente necessário ter pelo menos um método abstrato em uma classe abstrata. Essa restrição foi removida no JDK 1.1 (1997? (Eu sou velho) e essas classes adicionadas à biblioteca Java, como java.awt.event.KeyAdapter.

No C ++, você precisa de pelo menos uma função virtual pura para tornar uma subclasse necessária e pelo menos uma função virtual para adicionar RTTI à classe. Normalmente, faz sentido usar o destruidor.

Nota ao substituir métodos não abstratos, usando @Override É uma boa ideia. Ele não apenas informa ao leitor informações importantes sobre o que o código está tentando fazer, mas também vê erros comuns em que erros de digitação ou tipos de parâmetros incorretos impede a substituição.

Não - você pode declarar um resumo de classe sem ter métodos abstratos. Pode não fazer sentido conceitualmente para uma instância dessa classe existir, ou você pode garantir que apenas as subclasses dessa classe possam ser instanciadas (por qualquer motivo)

Se uma classe tem um abstract modificador em sua declaração, torna -se abstract classe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top