[英]Java accessing instance variables
如何使名为rooms的对象数组最终可以被静态方法访问,名为retrieveRoom(); 我试过公共静态客房[] =新房间[3]。 但我只是从中得到错误。 任何帮助表示赞赏。
public class MasterControlPanel{
public static void main(String[] args){
Rooms rooms[] = new Rooms[3];
rooms[0] = new Rooms("Room U", 1, 4, 4);
rooms[1] = new Rooms("Room U", 2, 4, 4);
rooms[2] = new Rooms("Connector X", 3, 2, 4);
rooms[3] = new Rooms("Connector U", 4, 2, 4);
for(int x = 0; x <= rooms.length; x++){
rooms[x].createLights();
rooms[x].createWalls();
}
}
public static Object retrieveRoom(int connectedRoom){
connectedRoom -= 1;
return rooms[connectedRoom];
}
}
移动
public static Rooms[] rooms = new Rooms[4];
从你的main()
方法,到这样的声明部分
public class MasterControlPanel {
public static Rooms[] rooms = new Rooms[4];
public static void main(String[] args) {
...
}
}
这将在MasterControlPanel
类中定义一个rooms
静态成员 。
以下是一些其他提示:
Class
存在,就可以访问静态成员。 但是,为了访问实例成员(属于该类实例的变量),您需要该类的实例。 Rooms[] rooms = new Rooms[4];
。 请注意,数组括号被移动到Type
部分,这将防止将来混淆。 “ 让我们用房间名称命名一个房间数组 ”。 然而,这并不是一件好事。 rooms
数组,但是您要为其添加4个元素。 这将导致ArrayIndexOutOfBounds
异常。 private
以实现封装 。 您可以提供public
或protected
方法来从类中检索这些private
成员。 n
元素,连续迭代,你可以使阵列上的最大数量也n
这是肯定的。 这意味着在for
循环中确保最后一次迭代的循环条件为n-1
。 请记住,大小为4
数组中没有第4
个元素。 以下是代码
public class MasterControlPanel {
public static Room[] rooms = new Room[4];
public static void main(String[] args) {
rooms[0] = new Room("Room U", 1, 4, 4);
rooms[1] = new Room("Room U", 2, 4, 4);
rooms[2] = new Room("Connector X", 3, 2, 4);
rooms[3] = new Room("Connector U", 4, 2, 4);
for (int x = 0; x <= rooms.length-1; x++) {
rooms[x].createLights();
rooms[x].createWalls();
}
}
public static Room retrieveRoom(int connectedRoom) {
connectedRoom -= 1;
return rooms[connectedRoom];
}
}
class Room {
// These are instance members for Room class
private String roomString;
private int roomInteger1, roomInteger2, roomInteger3;
public Room(String string, int integer1, int integer2, int integer3) {
// This is the constructor for Room object
this.roomString = string;
this.roomInteger1 = integer1;
this.roomInteger2 = integer2;
this.roomInteger3 = integer3;
}
public void createLights() {
// This method creates lights
}
public void createWalls() {
// This method creates walls
}
// These are Getters and Setters for Room members
public String getRoomString() {
return roomString;
}
public void setRoomString(String roomString) {
this.roomString = roomString;
}
public int getRoomInteger1() {
return roomInteger1;
}
public void setRoomInteger1(int roomInteger1) {
this.roomInteger1 = roomInteger1;
}
public int getRoomInteger2() {
return roomInteger2;
}
public void setRoomInteger2(int roomInteger2) {
this.roomInteger2 = roomInteger2;
}
public int getRoomInteger3() {
return roomInteger3;
}
public void setRoomInteger3(int roomInteger3) {
this.roomInteger3 = roomInteger3;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.