繁体   English   中英

如何将某些值从一个类转移到另一个类?

[英]How can I transfer some values from one class to another?

首先,我有3个与getter和setter的类。 在Main类中,我扫描了两个int类型的变量,称为rowscolumns ,它们又用于初始化Airplane类的实例。 之后,我想在Flight类中计算这些变量的乘积。 因此,我将值设置为rows = 2columns = 3并将其输出到console 0 我提供的每个不同的值始终返回0 您的帮助将不胜感激! 这是我的代码:

主班:

  public class Main {
       public static void main(String[] args) {
           int counter=1;
           if (counter==1) {
               Scanner scanner = new Scanner(System.in);
               int rows, columns;
               Airplane airplane = new Airplane();
               rows = scanner.nextInt();
               airplane.setRows(rows);
               columns = scanner.nextInt();
               airplane.setColumns(columns);
               System.out.println(airplane.getColumns()*airplane.getRows());
               counter++;
           }
           if (counter==2){
                   Flight flight = new Flight();
                   int seats=0;
                   seats=flight.getNumberOfSeats();
                   System.out.println(seats);
            }
    }
}

航班等级:

public class Flight {
    private int numberOfSeats;
    //getters and setters
}

飞机舱:

public class Airplane {
    private int rows;
    private int columns;
    //getters and setters
}

在第二个if语句中,您创建了Flight的新实例,并且未更改其任何字段值,因此,当您在此处读取座位数时,它的初始值仍为0(int的默认值) 。 下面的代码应做您想要的。

public class Main {
   public static void main(String[] args) {
       int counter=1;
       Airplane airplane;
       if (counter==1) {
           Scanner scanner = new Scanner(System.in);
           int rows, columns;
           airplane = new Airplane();
           rows = scanner.nextInt();
           airplane.setRows(rows);
           columns = scanner.nextInt();
           airplane.setColumns(columns);
           System.out.println(airplane.getColumns()*airplane.getRows());
           counter++;
       }
       if (counter==2) {
           Flight flight = new Flight();
           flight.setNumberOfSeats(airplane.getColumns()*airplane.getRows());
           System.out.println(flight.getNumberOfSeats());
       }
   }
}

我认为这是多态性和合成的练习。 想法可能是FlightAirplane具有HAS-A关系 您的Flight班级将看起来像这样:

class Flight {
  private Airplane airplane;
  private int numberOfSeats;

  public Flight(Airplane airplane) {
    this.airplane = airplane;
    this.numberOfSeats = (airplane.getColumns() * airplane.getRows());
  }

  public void getNumberOfSeats() {
     return this.numberOfSeats;
  }


  public void setNumberOfSeats(int numberOfSeats) {
    this.numberOfSeats = numberOfSeats;
  }
}

在您的主要代码中,您现在只需要将Airplane的尊贵性传递给Flight

Flight flight = new Flight(airPlane);

由于您已经在if范围之外定义了飞机,因此可以将其更改为Airplane airplane = null;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM