Srs, bom dia!
Estou com uma duvida conceitual com relação a Classes em Java. Vou usar exemplo da classes Scanner e Math.
Quando usamos classe Scanner é necessário instanciar e criar um objeto, exemplo:
Scanner input = new Scanner( System.in )
Porém quando usamos a class Math não se faz necessário criar nenhum tipo de instancia para um objeto. Minha duvida é: por quê Java possui duas classes que quando são utilizadas tem uma tratativa de chamada distinta?
Fiz algumas pesquisa e encontrei que método pow da classe Math é tipo static: este seria um motivo que quando utilizado não se faz necessário instância-lo á nenhum objeto? Os demais métodos da class Math seguem o mesmo padrão?
Se, alguém puder me ajudar com essa duvida agradeço antecipadamente.
[quote=leandroendrix]Srs, bom dia!
Estou com uma duvida conceitual com relação a Classes em Java. Vou usar exemplo da classes Scanner e Math.
Quando usamos classe Scanner é necessário instanciar e criar um objeto, exemplo:
Scanner input = new Scanner( System.in )
Porém quando usamos a class Math não se faz necessário criar nenhum tipo de instancia para um objeto. Minha duvida é: por quê Java possui duas classes que quando são utilizadas tem uma tratativa de chamada distinta?
Fiz algumas pesquisa e encontrei que método pow da classe Math é tipo static: este seria um motivo que quando utilizado não se faz necessário instância-lo á nenhum objeto? Os demais métodos da class Math seguem o mesmo padrão?
Se, alguém puder me ajudar com essa duvida agradeço antecipadamente.
[/quote]
Creio que a classe Scanner você está inicializando um objeto de entrada de dados correto ? Igual a Random.
E na classe Math você inicializa um ou mais métodos que já vem por default, igual o System.out.print, System.err.priint, estruturas de condição e loop, etc, creio que seja isso
juninhoall, bom dia!
Exato, estou usando Scanner para entrada de dados. Minha duvida é exatamente essa: como algumas Classes você consegue chamar os objetos “Default”? Conceitualmente quer dizer que quando eu faço á chamada dos objetos das Classes em questão, os objetos são do tipo Static? Sendo assim, não se faz necessário criar nenhum tipo de instância para um ou mais objetos da Classe?
Esta é apenas uma duvida conceitual com relação O.O. Tal questão não é uma dificuldade que eu tenho no momento do desenvolvimento de algum aplicativo.
Agradeço seu retorno. Abraço.
Bom, sempre se gerou muita discussão ao redor de métodos estáticos, mas você selecionou um exemplo muito bom.
Quando trabalhamos com orientação a objetos, pensamos em instâncias, como você exemplificou com a classe Scanner.
Porém, também é comum termos classes que chamamos de utilitárias, que implementam diversos métodos que queremos acessar para facilitar o nosso código, mas não faria muito sentido instanciá-las, ou pelo menos deixaria o código mais verboso sem ncecessidade.
Temos como alguns exemplos a classe Math que você mencionou, porém também temos as classes Collections e Arrays, entre outras.
Se você reparar, essas classes possuem somente métodos estáticos, um construtor privado, e o modificador final em sua declaração, ou seja, não devem ser instanciadas em nenhum caso, são somente para auxiliar você no desenvolvimento do seu código.
Isso ajudou a resolver sua dúvida? Sei que é um conceito meio abstrato e posso não ter explicado muito bem
Rodrigo, boa tarde!
Agora sim! Você conseguiu sanar minha duvida! Perfeito! Muito obrigado pelo apoio. Penso que fundamental saber programar, porem um diferencial e conhecer bem o processo conceitual.
Abraço.