我對Java很新,我想知道是否可以將對象分配給另一個對象。例如,假設我有一個名爲「課堂」的對象。在這個教室裏,我有椅子,桌子,桌子等。 椅子,桌子和桌子都是物體本身,它們有自己獨立的屬性,比如椅子腿的數量,桌腿的寬度等等。所以基本上,我有4班。現在我想分配椅子,桌子,棋盤作爲ClassRoom的屬性。我不知道如何去做這件事。將對象分配給對象Java
任何幫助,將不勝感激, 在此先感謝 酯
我對Java很新,我想知道是否可以將對象分配給另一個對象。例如,假設我有一個名爲「課堂」的對象。在這個教室裏,我有椅子,桌子,桌子等。 椅子,桌子和桌子都是物體本身,它們有自己獨立的屬性,比如椅子腿的數量,桌腿的寬度等等。所以基本上,我有4班。現在我想分配椅子,桌子,棋盤作爲ClassRoom的屬性。我不知道如何去做這件事。將對象分配給對象Java
任何幫助,將不勝感激, 在此先感謝 酯
我不是一個大java傢伙,但我懷疑它類似於在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 room = new classRoom();
height = room.chair.leg.get_height();
雖然記這是不好的做法,你應該設置函數來獲取這些值,而不是直接訪問它們。
你需要讓課堂「複合」類,一說認爲,指的是你提到的其他類領域。例如,「課堂」可容納ArrayList<Furnature>
(或稱爲 Furnature的ArrayList ),並且您的主席,表格和類似課程可以從抽象Furnature課程擴展而來。然後,您可以授予「課堂」方法,以允許您從ArrayList添加和移除Furnature項目。
哦,並且當你看到他時盡我所能給莫底凱叔叔。 – 2012-03-15 14:28:37
我想一個簡單的方法是列出
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() {
....
編輯去:添加對象
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;
}
外,從主例如
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...
真實世界的教室通常有多個桌子或椅子。 – 2012-03-15 14:35:04
是的,我編輯模仿真實世界的教室:)。謝謝 – 2012-03-15 14:36:01
你有一個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;
}
}
這不會編譯,因爲方法沒有body和返回類型 - 而且教室通常有多個桌子或椅子 – 2012-03-15 14:37:27
是的我意識到這一點,我引用「這可能不完全是語法正確,但它應該看起來像這樣:「 我認爲僞代碼在這種情況下更有用 – Prediluted 2012-03-15 14:43:48
謝謝!對此,我真的非常感激 – Ester 2012-03-15 19:26:47