Boa tarde Pessoal… tudo bem?
Estou com dúvidas quanto ao static, tanto quanto a variáveis de instância quanto à métodos.
Também com relação quanto posso acessar uma variável static e ou um método static…
Caso alguém poss me ajudar ficarei muito grato
donatinho
opa, qualseria a sua duvida em especial,
o que possoa adiantar é que objetos tipo static não podem ser criado uma nova instancia dele.
mantendo sempre o estado alteriormente atribuido.
Membros estáticos
São alocados na memória STACK e são compartilhados por quaisquer
instâncias da classe.
Atributos estáticos
Conceitualmente descrevem características da classe. Eles armazenam
valores que são compartilhados por qualquer instância da classe. Ou seja se
uma instância modificar o valor de um atributo estático, essa modificação será
refletida para todas as outras instâncias.
Métodos estáticos
Conceitualmente descrevem operações que uma classe pode realizar ou ainda
operações que podem modificar as características dessa classe. Tais métodos
não realizam (e não podem realizar) operações sobre instâncias da classe, a
não ser que a instância seja passada como parâmetro.
Até!!
Vou tentar lhe esplicar em resumo.
Quando uma variável ou método são declarados com o modificado static eles passão a ser denominados de variável/método de classe, ou seja, que não precisam ser instanciados (criar um objeto da classe), para serem usados. Por exemplo vamos supor que exista a seguinte classe:
ClasseExemplo {
public int i;
public static int x;
public static void metodo1();
public void metodo2();
}
Para você ter acesso a variável x e ao método1 basta fazer
ClasseExemplo.x e/ou ClasseExemplo.metodo1(). Ou seja, o nome da classe + . + nome da variável/metodo estático.
Já para acessar a variável i e o método2 você vai precisar fazer o seguinte:
ClasseExemplo objeto_exemplo = new ClasseExemplo();
objeto_exemplo.i
objeto_exemplo.metodo2
Ou seja, o nome do Objeto + . + variável/metodo.
Assim, métodos não estáticos só podem ser usados em instâncias de classes (Objetos), já o estáticos podem ser usados diretamente pela classe. Epero ter ajudado.
bom o resumo de efren_lopes foi ótimo! a única coisa de ele e que muita gente peca é ainda falar sobre variáveis em OO.
Gente, esses termos funções e variáveis são para ESTRUTURADO, em
PROGRAMAÇÃO ORIENTADA A OBEJETOS, tem que ser usador: metodos e campos falou!
cléo, tu não percebeu que o termo “variavel” é utilizado para fazer com que a pessoa entenda melhor o que querem passar.
Pois acho que o fórum é para tirar dúvidas e facilitar o APRENDIZADO, então vamos parar de corrigir erros que ajudam os outros na compreensão e tentar ajudar.
Aí CLEO…vou trazer o conceito da palavra para você:
VARIÁVEIS(Conceito):
Inform.,
área de memória utilizada por um programa cujo valor pode variar ao longo da execução do programa.
Isso EXISTE SIM em O.O.
tiago_carl, você está absolutamente certo na definição do termo que também serve para campos; peço desculpas se fui agressivo em meu comentário, mais é que zelo pelo termo correto da teoria, afinal alguém se esforçou para cria-lá e devemos respeitar tal pensamento! Acho sim, que se deve facilitar, mais lembra e conscientizar sobre termos da teoria, que tanto é negligenciando.
Essa é a primeira vez que vejo referência a campo como sendo variável em Java.
Consultei “Java, Como Programar 4ª ed., Deitel & Deitel” e “Aprenda em 21 dias Java 2, Lemay e Cadenhead” e em nenhum dos dois existe essa notação para variável.
Já vi (atributo ~ variável) e (comportamento ~ método ~ função), mas não vi (variável ~ campo). Onde “~” significa equivalente.
Tanto que vejo direto variáveis disso e daquilo (de classe, de instância, local) no Java.
Você está se referindo a OO de uma maneira geral e não especificamente ao Java?
Fiquei curioso com relação a essa notação, por favor, indique um livro ou tutorial (de preferência este último) que a contenha.
Thanks.
JavaDrops caro companheiro, esse termo li no livro que por sinal é indicado para a certificação SCJP da SUN, dos autores: Cay S. Horstmann e Gary Cornell, titulo: Core Java? 2 Volume I - Fundamentals, Seventh Edition.
Esse termo ainda é usado, pois tem grande fator histórico, mas veja pelo ponto de vista lógico; sabendo-se que podemos reservar uma alocação na memória e que geralmente ela é alterada, realmente este termo é ainda aceitável, mas como bem sabemos que uma alocação quando definida como: final e que em todo o algoritmo ela não varia, acho que vale a pena dizermos: “será que esse termo ainda se vale de ser aplicado”.
Existem várias maneiras de se chamar uma variável em OOP.
Basicamente, existe ESTADO, o estado é formado pelo valor das variáveis de um objeto.
Alguns autores chamam as variáveis-membro de dimensões do estado, em C++ eles são variáveis-membro, em java são fields (campos), em Eiffel atributos…
Mas variável é um termo genérico utilizado sim em OOP.
Uma variável final tem um outro nome: constante.