eu queria saber se um metodo declarado static pode acessar membros da classe nao static?
Static
11 Respostas
COmo assim?
Você tem uma classe com um método stático e quer saber se pode acessar um método não statico de uma outra classe?
se for, pode!
eu ja ouvi falar que pode mas na internet eu encontrei que não pode
obrigado
Acho que não pode.
Métodos static só podem acessar variáveis static.
Faça testes...
class Teste1 {
static void Teste1() {
System.out.println("1");
}
void Teste2() {
System.out.println("1");
}
}
class Teste2 {
Teste1 t1 = new Teste1();
t1.Teste1();
t1.Teste2();
}
Teste ae...
Aqui tem um artigo interessante sobre static
Métodos static não conseguem acessar diretamente variáveis ou métodos que não sejam static, pois eles pertencem a classe e não saberiam de qual instância utilizar. Por isso, é necessário que vc instâncie um objeto.
static so ver static, é como um Burro, com aquela parada nos olhos.
Agora um nao static ver tanto o static quanto o nao static.
flw!
Diretamente não faz nem sentido. Qual dos membros você acessaria? Uma vez que o método é static, ele não está associado a nenhum objeto da classe específico.
Agora, os membros podem ser acessados se forem recebidos como parâmetro, ou se forem criados dentro do método estático. Nesse caso, se ambos forem da mesma classe, você tem acesso até a área private do membro.
Por exemplo:
public void Exemplo {
private String nome = "Vinicius";
public static void printNome(Exemplo umExemplo) {
//Acessamos o atributo nome, privado.
System.out.println("O nome é: " + umExemplo.nome);
}
public static void main(String[] args) {
Exemplo.printNome(new Exemplo());
}
}
Vamos imaginar o seguinte cenário em OO
"João, Pedro e Henrique, cada um tem uma bola de futebol, ou seja, 1 variável bola para cada objeto Menino diferentes, porém perceberam que não precisavam disso para brincar, afinal sempre brincavam com apenas uma das bolas, logo resolveram deixar uma das bolas como STATIC, ou seja, essa bola pertence a classe Menino e é a única bola que eles conhecem…
Pedro resolveu jogar bola sozinho e vai atrás da variável bola que é da classe Menino, claro como a variável é da classe, ele pega a bola static… só que Pedro quebrou um acordo pois o método jogarBola() está permitindo que Pedro se beneficie da bola sozinho, então os três resolveram colocar o método jogarBola() como static, ou seja, só jogarão bolas juntos pois, static jogarBola() pertence a classe Menino e não aos objetos Pedro, Henrique e João
De repente os meninos brigaram e não querem mais ter apenas uma bola e desmarcaram a variável bola de static, pois cada um vai voltar a ter a sua. Só que para ironia do destino eles não conseguiram nunca mais jogar bola, o problema foi o seguinte: esses Meninos esqueceram de desmarcar o método jogarBola() de static, logo quando o método static jogarBola() era chamado, ele ia atrás de uma bola comum aos três, mas essa bola não existia mais, pois cada Menino agora tinha sua própria bola… e agora qual bola o método static jogarBola() ia pegar ???"
Cara esse é um exemplo bem simplório de como funciona o static em Java… espero ter sido claro… qualquer coisa é só perguntar…
Falows 
Vamos imaginar o seguinte cenário em OO"João, Pedro e Henrique, cada um tem uma bola de futebol, ou seja, 1 variável bola para cada objeto Menino diferentes, porém perceberam que não precisavam disso para brincar, afinal sempre brincavam com apenas uma das bolas, logo resolveram deixar uma das bolas como STATIC, ou seja, essa bola pertence a classe Menino e é a única bola que eles conhecem…
Pedro resolveu jogar bola sozinho e vai atrás da variável bola que é da classe Menino, claro como a variável é da classe, ele pega a bola static… só que Pedro quebrou um acordo pois o método jogarBola() está permitindo que Pedro se beneficie da bola sozinho, então os três resolveram colocar o método jogarBola() como static, ou seja, só jogarão bolas juntos pois, static jogarBola() pertence a classe Menino e não aos objetos Pedro, Henrique e João
De repente os meninos brigaram e não querem mais ter apenas uma bola e desmarcaram a variável bola de static, pois cada um vai voltar a ter a sua. Só que para ironia do destino eles não conseguiram nunca mais jogar bola, o problema foi o seguinte: esses Meninos esqueceram de desmarcar o método jogarBola() de static, logo quando o método static jogarBola() era chamado, ele ia atrás de uma bola comum aos três, mas essa bola não existia mais, pois cada Menino agora tinha sua própria bola… e agora qual bola o método static jogarBola() ia pegar ???"
Cara esse é um exemplo bem simplório de como funciona o static em Java… espero ter sido claro… qualquer coisa é só perguntar…
Falows ;)
Show de bola (literalmente) esse exemplo…
Eu nunca teria pensado em colocar futebol em Java…hahaha