Javaで他のクラスからメソッドを呼び出すことはできません

Dasphillipbrau:

私は、Javaに新たなんだと正直にその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を()ターンしようとした場合、「DESTINOは、非静的変数である」が、それは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=478571&siteId=1