Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida sobre static

Boa noite, com o utilizando o static o atributo/método sera apenas da classe porém uma instancia pode acessar esse método mesmo sendo errado fazer isso?

1 resposta
solução!

Alex, boa tarde!

Quando definimos um atributo ou método estático é por causa que nós queremos que ele seja acessível a todos mesmo, o que não torna errado acessá-lo.

devido à sua forte ligação com à classe (uma vez que é declarado no escopo dela) isso quer dizer que seu uso requer a menção à essa sua origem, e por isso a classe serve como forma de organização de funções de uso mais geral.

Por isso, a criação de métodos (ou atributos) estáticos é interessante quando se intenciona que eles sejam de livre utilização, mas bem identificados por um contexto representado pela classe.

Exemplos clássicos são as funções matemáticas como seno, cosseno, raíz quadrada, etc, ou as constantes como PI, E, etc. Muitas linguagens implementam essas funções de forma estática em uma classe específica para elementos matemáticos, permitindo fazer, por exemplo:

float valor = Math.sin(Math.PI);

O método para o cálculo do seno (Math.sin) é geral porque calcula o valor do seno dado apenas o ângulo em radianos recebido como parâmetro. Por isso, não requer uma instância de objeto e faz sentido ser criado de forma estática. Sua inclusão na classe de matemática (Math) juntamente com outros métodos e atributos contantes (como o Math.PI) permite organizar essas implementações em um mesmo contexto significativo (isto é, de matemática) para o desenvolvedor que for utilizá-las.

No seu exemplo, você pode considerar esse aspecto de generalidade do que deseja alcançar com a implementação ao decidir por criar o método como estático ou não:

  • Se deseja apenas ler o arquivo e retornar o conteúdo no formato textual, muito provavelmente um método estático seja suficiente. Especialmente se existirão outras funcionalidades que também terão esse caráter e farão sentido em ser agrupadas na mesma classe.
  • Por outro lado, se essa implementação pode vir a fazer uso de estados ou informações previamente processados ou pode ela mesmo produzir algo que persista para execuções futuras, parece natural que uma instância seja necessária para no mínimo armazenar essas informações e estados.

Caso tenha te ajudado, não se esqueça de marcar como solucionado para alcançar mais alunos!

Espero ter ajudado e bons!