将对象分配给对象Java

时间:2012-03-15 14:20:58

标签: java object

我是Java的新手,我想知道是否可以将对象分配给另一个对象。例如,假设我有一个名为Classroom的对象。在这个教室里,我有椅子,桌子,板等。 椅子,桌子和板子本身就是对象,它们有各自独立的属性,例如椅子腿数,桌腿,板子宽度等等。基本上,我有4个课程。现在我想将椅子,桌子,板子分配为ClassRoom的属性。我不知道该如何解决这个问题。

任何帮助将不胜感激, 提前致谢 酯

5 个答案:

答案 0 :(得分:1)

你需要让课堂成为一个&#34;复合&#34; class,一个包含引用你提到的其他类的字段的类。例如,“课堂”可以包含ArrayList<Furnature>(或称为装备的ArrayList ),您的主席,表格和类似类可以从抽象的Furnature类扩展。然后,您可以提供允许您从ArrayList添加和删除Furnature项的Classroom方法。

答案 1 :(得分:1)

修改:用于添加对象

public final class Classroom {
  public Classroom() {
     this.tables = new ArrayList<Table>;
     this.chairs = new ArrayList<Chair>;
     this.boards = new ArrayList<Board>;
  }

  public void addTable(final Table table) {
    this.tables.add(table);
  }

  public void addChair(final Chair chair) {
    this.chairs.add(chair);
  }

  public void addBoard(final Board board) {
    this.boards.add(board);
  }


  private final List<Table> tables;
  private final List<Chair> chairs;
  private final List<Board> boards;
}

以及外部,例如来自main

Table table = new Table(param1, param2);
Table anotherTable = new Table(param1, param2);
Chair chair = new Chair(param1, param2);
Board board = new Board(param1, param2);

现在让你的教室:

Classroom classroom = new Classroom();

// adding object
classrooom.addTable(table);
classroom.addChair(chair);
classroom.addTable(anotherTable);

// and so on...

答案 2 :(得分:1)

教室和桌子之间有 has-many 关系(例如)。基本设计如下:

public class Classroom {
  List<Table> tables = new ArrayList<Table>();

  // you may want to add a table to the classroom
  public void addTable(Table table) {
    tables.add(table);
  }

  // you may want to remove one
  public void removeTable(Table table) {
    tables.remove(table);
  }

  // here we can replace (a broken) one
  public void replaceTable(Table oldTable, Table newTable) {
    tables.set(tables.indexOf(oldTable), newTable);
  }

  // and: the inventory
  public List<Table> getTables() {
    return tables;
  }
}

答案 3 :(得分:0)

我想一个简单的方法就是使用列表

class ClassRoom {
    private List<Chair> chairs = new ArrayList<Chair>();
    private List<Table> tables = new ArrayList<Chair>();
    ...

    void addChair(Chair chair) {
        chairs.add(chair);
    }

    List<Chair> getChairs() {
    ....

答案 4 :(得分:0)

我不是一个大家伙,但我怀疑它类似于在C ++中这样做... 只要定义了类,就应该能够将它们声明为另一个对象的属性,就像使用String这样的东西一样。 只需确保定义每个对象,并在该类中定义支持方法 这可能在语法上不完全正确,但它看起来应该是这样的:

class classRoom {
    Chair chair;
    Table table;
    Board board;
    String name;

    add_chair();
    add_table();
    remove_table();

}

class Chair {
    Leg leg1;
    Leg leg2;
}

class Leg {
    int height;
    set_height();
    get_height();
}

class Board {
    int width;
    int height;
}

现在,如果您想访问classRoom主席,您可以执行以下操作:

classRoom room = new classRoom();
height = room.chair.leg.get_height();

虽然注意这是不好的做法,但你应该设置函数来获取这些值,而不是直接访问它们。