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

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);
}

}

[code]
//main

package testedata;

import java.util.Calendar;

public class Testedata {

NewClass n = new NewClass();

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






}

}[/code]

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

[code]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();
}

}
[/code]

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