Não é possível chamar método de outra classe em Java

Dasphillipbrau:

Eu sou novo para Java e honestamente seu foco OOP é bastante exigente para mim no momento.

Para um projeto Uni onde estamos destinados a praticar este foco, eu estou encarregado de criar pelo menos 2 classes: Uma classe deve ser para um cliente companhia aérea e a outra classe deve conter métodos para registrar sua compra.

Eu tenho um arquivo principal, uma classe Persona (Pessoa), e uma classe RegistroCompra (Registro de Compra). Pessoa é suposto ter todos os seguintes atributos, que estou lidando como variáveis ​​privadas para que cada instância de pessoa pode obter um deles. (Os atributos sendo solicitado são coisas como dados pessoais, número do bilhete, número do assento e tal)

public class Persona {



    private String nombrePasajero;
    private String apellidoPasajero;
    private String generoPasajero;
    private String pasaportePasajero;
    private String numTiquetePasajero;
    private String numVueloPasajero;
    private String destinoPasajero;
    private String asientoString;
    private int precioBoleto;
    private int edadPasajero;
    private int numAsientoPasajero;

    //Constructor

    public Persona(String nombre, String apellido, String genero, int edad, String pasaporte) {

        nombrePasajero = nombre;
        apellidoPasajero = apellido;
        generoPasajero = genero;
        pasaportePasajero = pasaporte;
        edadPasajero = edad;

    }

    public void setDestino() {
        destinoPasajero = RegistroCompra.obtenerDestino();
    }

E minha classe RegistroCompra, que se destina a definir os dados relacionados não à informação pessoal, mas com a informação de destino, número de voo e tal. Todo o conjunto de dados em RegistroCompra precisa ser recuperado por Persona, porque só Persona será impresso no principal para verificar toda a informação.

public class RegistroCompra {

    private String destino;

    public void seleccionarDestino() {
    Scanner input = new Scanner(System.in);
    System.out.println("Por favor digite el destino, las opciones actuales son Nicaragua o Panama\n");

    String destino = input.nextLine();
}
    public String obtenerDestino() {
        return destino;
    }

}

No entanto, eu recebo um erro no método Persona.setDestino (), dizendo "método não-estático obtenerDestino não pode ser referenciada a partir do contexto astática"

Eu não entendo por que isso está acontecendo. Se eu tentar transformar RegistroCompra.obtenerDestino () em um método estático, eu recebo um erro porque "destino é uma variável não estática", mas ele está sendo definido como público na classe RegistroCompra ...

royalghost:

Você tem que fazer algo como abaixo:

public class Persona {
   ...
   //You should have instance of RegistroCompra
   RegistroCompra registraCompra = new RegistroCompra();
   public void setDestino() {
        //Option 1: Explicitly call the method
        registraCompra.seleccionarDestino();
        destinoPasajero = registraCompra.obtenerDestino();
    }
}

public class RegistroCompra {

    private String destino;

    public RegistroCompra(){
       //Option 2 : Call the method in constructor
       registraCompra();
    }
    public void seleccionarDestino() {
    ...
    //Set the input to the class level variable destino
    this.destino = input.nextLine();
}
    public String obtenerDestino() {
        return this.destino;
    }

}


Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=478570&siteId=1
Recomendado
Clasificación