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