Método get dentro de um construtor jframe

Porque não posso utilizar um método get dentro de um construtor ? Estou iniciando meus estudos e na atividade pede que o campo seja passado por parâmetro pra outra tela, mas não consegui. Só consegui passando o valor da variável diretamente mesmo, aloquei numa variável pública.

Pode sim.
Explica o que você quer fazer e posta o seu código.

Posta o código e o erro tbm?

Você pode, desde que não faça herança. Se o get for privado, final (ou a classe final) nunca terá problema.

O motivo disso é que você deve se lembrar que os construtores rodam “de cima para baixo”, ou seja, da classe pai, em direção as classes filhas. Então, se uma classe filha fizer a sobrescrita do seu get e usar variáveis que só existem na classe filha, coisas bem ruins vão acontecer. E o pior, sem que o Java emita nenhum erro.

Eu entendi. Mas eu nem tô usando herança nem tentando sobrescrever ele. Eu tento apenas usar o método get pra retornar o valor mesmo. E a mensagem que ele me dá é que não posso usar um método não estático em um contexto estático. Tentei usai o get dentro do construtor e dentro do evento do botão e os dois deram essa mesma mensagem.

Você não está tentando chamar um método dentro de um construtor.

Você está tentando chamar um método não estático dentro de um método estático.
Isso não é permitido.

Se tivesse postado o código, já teríamos identificado e resolvido há 3 dias.

1 curtida

Métodos não estaticos precisam de um objeto para serem chamados. Por exemplo se vc tem

public class Exemplo {
      public void exemplo() {
            System.out.println(“Olá!”);
      }
}

Você não pode fazer Exemplo.exemplo().

Vai ser necessario criar um objeto com a palavra chave new:

var ex = new Exemplo();
ex.exemplo(); // funciona!

E que ocorre em um método estatico? Diferente dos métodos nao estaticos ele nao esta associado a nenhum objeto. Então ou vc cria o objeto la, ou passa para ele objetos como parametro. Um lugar onde isso costuma a acontecer é o main, veja isso não funciona:

public class Exemplo {
      public void exemplo() {
            System.out.println(“Olá!”);
      }
      public static void main(String[] args) {
             exemplo(); // não tem objeto aqui!
      }
}

Mas isso funciona:

public class Exemplo {
      public void exemplo() {
            System.out.println(“Olá!”);
      }
      public static void main(String[] args) {
             var ex = new Exemplo()
             ex.exemplo(); //ok!
      }
}

Atribui static ao seu metodo get. Tenta seguir as regras de programação Java. Talvez fique até menos complicado utilizar static no seu metodo get, pois não vai ser preciso instanciar o objeto da classe da qual seu metodo get está.

Faz muito tempo que nao programo nada, quase 8 anos. Mas consigo lembrar de algumas coisas…

static só aceita interagir com static…

Para todo problema tem uma solução simples, rapida e errada. No caso, essa é uma delas.

Geralmente em POO raramente usamos static.

2 curtidas