Dúvida tipos de variáveis - non-static variable cannot be referenced from a static context

1 resposta
J

Boa noite pessoa, to querendo imprimir o mesatual para ver se o método ta fazendo a troca correta, mas ta tando esse erro depois de instanciar a classe na classe main - non-static variable n cannot be referenced from a static context

//classe que vai checar o mes
public class NewClass {
    
   public  int  mesatual=9;

    public int getMesatual() {
        return mesatual;
    }

    public void setMesatual(int mesatual) {
        this.mesatual = mesatual;
    }
    
    
     public  void gerarCodigo(){
        
        Calendar hoje = Calendar.getInstance();
        int mes = hoje.get(Calendar.MONTH)+1;
        int ano = hoje.get(Calendar.YEAR);  
        
        if(this.getMesatual()!=mes){
            this.setMesatual(mes);
            
            
        }
        
    }

public void imprimir(){
    System.out.println(mesatual);
}

}
//main

package testedata;

import java.util.Calendar;

public class Testedata {

    NewClass n = new NewClass();
    
    public static void main(String[] args) {
        
       n.imprimir();
    

    
   
   
    
    }
}

1 Resposta

carloshsamaral

Janson eu também sou novato na programação só tenho uma base pelos cursos que eu fiz mas vamos lá ... Deixa eu ver se consigo te ajudar.

Eu copiei teu código aqui e funcionou pelo simples fato de

public class HelloMain {
	public static void main(String[] args) {
		//System.out.println("Hello World");
		NewClass n = new NewClass();//Você tem que instânciar dentro do main e não fora
		
		n.imprimir();
	}
}

Outro ponto...

Pelas definições da Orientação a Objeto as variáveis tem q ser diferentes de public para não deixar que classes externas tenham acesso direto a elas o nome desse conceito é encapsulamento, você deve definir as classes como private/protect entre outras para isso e acessar o seu valor e alterar com os set/get de cada variável

Se eu falei alguma besteira por favor corrijam!
Criado 13 de outubro de 2015
Ultima resposta 13 de out. de 2015
Respostas 1
Participantes 2