在 class 中创建数组并在另一个 class 中访问数组

Create array in class and access the array in another class

我有一个问题要创建一个“人”class,一个继承“人”的“员工”class,一个可以包含的“房间”class Person 的数组 (3) 然后创建所有 setter 和 getter 以及一个方法调用 show() 来打印属性,以及一个 main class 来创建一个“房间”,添加 2 “person”和1个“staff”然后打印所有属性。

我完成了“人”和“员工”class。

    class Person{
    protected String Name;
    protected int Age;
    //... i had done the person class including the getter and setter
    

工作人员 class 继承人 class 并显示输出

    class Staff extends Person{
      private double Salary;
    ...
    @Override
public void show(){
    System.out.println("Name: " + this.Name);
    System.out.println("Age: " + this.Age);
    System.out.println("Salary: RM " + df.format(this.Salary));
}

我不确定如何在房间 class 中创建数组以及如何在主 class 中访问它。 在主要 class 我应该是 (a) 创建一个房间。 (b) 用你的名字添加一个人。 (c) 添加带有您父亲名字的员工。 (d) 用你母亲的名字添加一个人。 (e) 将所有人员详细信息打印到控制台。

我曾尝试创建一个数组并打印出所有属性,效果很好,但问题要求我创建房间 class 所以我对如何做有点困惑。

    class Main{
public static void main(String[] args) {

    Person family[] = new Person[3];
    family[0] = new Person("Me", 20);
    family[1] = new Staff("Papa", 60, 300);
    family[2] = new Person("Mama", 55);
    for(int i = 0; i<family.length; i++) {
     family[i].show();
     System.out.println(" ");
  }
}
    }

请帮我整理房间和主房间class。

是这样的吗?

Room.java:

class Room {
  private Person[] persons;

  public Room(Person[] persons){
    this.persons = persons;
  }

  public void listAllPersons() {
    // loop over array and print details
  }
// add getters and setters as you need
}

主要class:


public static void main (String[] args) {

    Person persons[] = new Person[3];
    persons[0] = new Person("Me", 20);
    persons[1] = new Staff("Papa", 60, 300);
    persons[2] = new Person("Mama", 55);

    Room room = new Room(persons);
    room.listAllPersons();
}

Class 房间可以这样实现:

  public class Room {
    private final int capacity;
    private Person[] persons;
    private int id;

    public Room(int capacity) {
        this.capacity = capacity;
        this.persons = new Person[capacity];
    }

    /**
     *  return true if capacity of the room is not
     *  exceeded and new person was added successfully
     */
    public boolean addPerson(Person pers) {
        if (id == capacity) {
            return false;
        }
        persons[id++] = pers;
        return true;
    }

    public void showPersons() {
        /* 
        if you are familiar with streams you can use it instead of a loop,
        otherwise remove commented limes
        Arrays.stream(persons).forEach(Person::show);
         */
        for (var pers: persons)
            pers.show();
    }
    
    public Person[] getPersons() {
        return persons;
    }
}

Class 主要 - 您的客户:

public class Main {
    public static void main(String[] args) {
        Room room = new Room(3);
        room.addPerson(new Person(new Person("Me", 20)));
        room.addPerson(new Person(new Staff("Papa", 60, 300)));
        room.addPerson(new Person(new Person("Mama", 55)));
        room.showPersons();
    }
}

如有不明之处,欢迎追问。