eu sou novato em POO, portanto e comum ter muitas duvidas certo, portanto lhes pergunto o que seria este tal static conceitualmente exeplificando se possivel com java, mas ou menos tenho uma ideia mais nada muito entendendor so sei que public stativ void main(String args []){
possui um metodo do tipo static que possui lista dos get e set e metodos publicos e static … mas nada muito entendedor por isso que pessoa uma ajuda!!!
desde ja agradeço
Muito Obrigado!!!
Uma boa Noite!!!
gutorocher,
Eu lhe aconselho a compra de um livro sobre OO. Pelo visto você está começando a ver os conceitos de OO e Java.
Essas dúvidas são normais, e acredito que um livro lhe ajudará, pois trará as explicações e exemplos (com código).
Talvez o livro do Deitel (Java Como Programar), fosse interessante para você. Acho que a galera pode sugerir alguma literatura legal, e você pode dar uma olhada na parte de artigos e tutoriais do GUJ também.
Quando vc coloca static em alguma coisa… variaveis, metodos… blocos… etc… vc esta dizendo que nao precisa de uma instancia daquela classe para poder acessa-lo.
Isso pode ser muito util no caso de classes utilitarias!
public class StringUtil{
public static String backwords(String name){
//... codigo que inverte as letras...
return backwordsName;
}
}
Como este metodo eh static, ele eh relativo a classe… entao vc chama ele pela classe evitando a invocacao do operador new desnecessariamente.
String backwords = StringUtil.backwords("Bruno");
Voce tambem pode encontrar static aplicado em Singleton… mas isso eh conteudo pras suas proximas pesquisas!
Espero que tenha ilustrado algo… assim vc tem alguma coisa por onde comessar as pesquisas!
[]'s
Conceitualmente, dentro da OO, static é uma aberração. Existem até propostas de linguagens que eliminam esses métodos totalmente. Um método static significa uma ação relacionada a ninguém e, em OO purista, apenas objetos podem realizar ações.
Entretanto, na prática, não podemos ser tão puristas assim. Algumas funções, como construção de objetos, são comumente associadas a métodos estáticos, uma vez que é responsabilidade da classe construir seus próprios objetos.
O uso de funções utilitátias static deve ser evitado. Geralmente, elas são melhores modeladas como métodos. Como o colega citou, as vezes esse é um recurso rápido e prático, mas ele não vem sem consequencias de projeto.
Para a implementação de um método estático, basta declara-lo como static na classe:
[code]
public class Pessoa {
public String nome;
public Pessoa(String nome) {
this.nome = nome;
}
public static Pessoa copiar(Pessoa p) {
return new Pessoa(nome);
}
public getNome() {return nome;}
}[/code]
Para usar, basta fazer a chama direta:
Pessoa vgm = new Pessoa("Vinicius");
Pessoa outraPessoa = Pessoa.copiar(vgm);