Nossa, como isso funciona? Achei que classes abstratas não podiam ter statements
abstract class D extends C {
void x(int i) throws IOException {
System.out.println("d");
}
}
Nossa, como isso funciona? Achei que classes abstratas não podiam ter statements
abstract class D extends C {
void x(int i) throws IOException {
System.out.println("d");
}
}
A sintaxe apresentada está correta e é válida em Java. Em classes abstratas, é possível incluir tanto métodos abstratos (sem implementação) quanto métodos concretos (com implementação). No exemplo fornecido, o método x(int i)
é um método concreto, pois possui uma implementação definida.
Ao utilizar a palavra-chave abstract
em uma classe, indica-se que a própria classe é abstrata, o que significa que não pode ser instanciada diretamente. No entanto, é permitido que uma classe abstrata contenha métodos concretos com implementações definidas.
A classe D
estende a classe C
e fornece uma implementação concreta para o método x(int i)
. Importante observar que, se a classe C
também for abstrata e não fornecer uma implementação para o método x(int i)
, a classe D
deve obrigatoriamente fornecer uma implementação concreta.
Em resumo, classes abstratas podem incluir tanto métodos abstratos (sem implementação) quanto métodos concretos (com implementação). Métodos abstratos devem ser implementados por subclasses concretas, enquanto métodos concretos podem ser herdados pelas subclasses.