2
respostas

Classe abstrata HTTP

Não entendi muito bem a parte que foi falado que precisava do extends, poderia explicar melhor, porque a classe do HTTP é abstrata?

2 respostas

Oi Gisele! Tudo bem?

Quando falamos que uma classe é abstrata em Java, significa que ela não pode ser instanciada diretamente. Ou seja, você não pode criar objetos dessa classe usando o operador new.

As classes abstratas servem como modelos para outras classes, fornecendo uma estrutura básica que pode ser compartilhada. Elas podem conter métodos abstratos (sem implementação) que precisam ser implementados pelas subclasses, ou seja, pelas classes que "herdam" dessa classe abstrata.

O uso do extends é justamente para herdar de uma classe abstrata. Quando uma classe herda de uma classe abstrata, ela se compromete a implementar todos os métodos abstratos que a classe abstrata define. Isso é útil para garantir que todas as subclasses tenham uma implementação consistente desses métodos.

No contexto do seu curso, a classe HttpRequest é abstrata, o que significa que ela foi projetada para ser usada com o padrão de projeto Builder. Em vez de instanciar HttpRequest diretamente, você usa HttpRequest.newBuilder() para criar um "construtor" de requisições HTTP. Esse builder é uma maneira de configurar e construir um objeto HttpRequest de forma controlada.

Aqui está um exemplo prático:

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://www.example.com"))
    .build();

Nesse exemplo, HttpRequest.newBuilder() cria um builder que você usa para configurar a requisição (como definir a URI) e, finalmente, chamar build() para obter uma instância de HttpRequest.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Muito obrigada pela resposta, bem completa.

Referente a essa parte: "a classe HttpRequest é abstrata, o que significa que ela foi projetada para ser usada com o padrão de projeto Builder""

Olhando a documentação eu já consigo identificar que deve usar o builder ou tem outra forma de verificar como usar a classe abstrata, tem outras formas de implementar?