Olá, Marcus! Como vai?
Suas dúvidas são super validas e agradeço por trazê-las aqui. Vamos tentar esclarecer.
A instância de uma classe dentro dela mesma pode parecer redundante, mas, na verdade, é uma prática comum em alguns padrões de projeto, como o Singleton, por exemplo. No entanto, o que você está vendo aqui não é exatamente uma instância da classe dentro dela mesma, mas a criação de uma instância para acessar métodos não estáticos.
Quando um método é estático, ele pertence à classe e não a uma instância específica da classe. Isso significa que você pode chamá-lo diretamente sem criar uma instância da classe. No exemplo que você mencionou, o método listarAbrigos()
é estático, então você pode chamá-lo diretamente como listarAbrigos()
.
Por outro lado, se um método não é estático, ele pertence a uma instância da classe. Isso significa que você precisa criar uma instância da classe para chamar esse método. Se você tivesse um método não estático listarPets()
, por exemplo, você precisaria criar uma instância da classe AdopetConsoleApplication
para chamá-lo, algo como:
AdopetConsoleApplication app = new AdopetConsoleApplication();
app.listarPets();
A vantagem de usar métodos não estáticos é que eles podem acessar e modificar os campos de instância da classe, o que os métodos estáticos não podem fazer. Isso pode ser útil se você tiver várias instâncias da classe que precisam manter seu próprio estado.
Espero que isso esclareça suas dúvidas! Lembre-se de que a escolha entre métodos estáticos e não estáticos depende do que você está tentando realizar. Ambos têm seus usos e vantagens.
Grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.