자바에있는 다른 클래스에서 메소드를 호출 할 수 없습니다

Dasphillipbrau :

나는 자바에 새로 온 사람과 정직의 OOP의 초점은 꽤 순간에 나를 위해 과세된다.

자신의 구매를 등록하는 방법을 포함해야 한 클래스는 항공사의 고객 및 다른 클래스해야한다 : 우리가이 초점을 실천하는 의미있는 유니 프로젝트를 위해, 나는 적어도 2 개 클래스를 만드는 임무를하고있다.

나는 메인 파일, 페르소나 (사람) 클래스 및 RegistroCompra (구매 등록) 클래스가 있습니다. 사람은 사람의 모든 인스턴스는 자신의 하나를 얻을 수 있도록 내가 개인 변수로 취급하고있어 다음과 같은 특성을 모두 가질 예정이다. (속성을위한 요청을 받고 개인 정보, 항공권 번호, 좌석 번호 등 같은 물건)

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

그리고 의미 내 RegistroCompra 클래스가 아닌 개인 정보하지만, 목적지, 항공편 번호 등의 정보와 관련된 데이터를 설정합니다. RegistroCompra의 데이터 세트의 모든 개인 만이 모든 정보를 확인하기 위해 메인 인쇄되기 때문에, 개인 페치되어야한다.

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

}

그러나, 나는 "비 정적 메서드 obtenerDestino이 불안정한 상황에서 참조 할 수 없습니다"라며 Persona.setDestino () 메서드에서 오류가 발생합니다

나는이 벌어지고 이유를 이해하지 않습니다. 내가 정적 메서드에 RegistroCompra.obtenerDestino ()를 설정하려고하면, 나는 "운명의 비 정적 변수는"때문에 오류가 발생하지만,이 RegistroCompra 클래스에서 public으로 정의되고있다 ...

royalghost :

아래처럼 뭔가를해야 :

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

}


추천

출처http://10.200.1.11:23101/article/api/json?id=478569&siteId=1