【发布时间】:2021-08-24 19:16:04
【问题描述】:
当我直接使用超类时它工作正常,但是当我尝试使用子类打印出值时它返回一个空值。 我创建了 2 个类用于显示和记录目的,假设“房间”读取并存储在用户做出选择后将记录到文本文件中的值,而“房间视图”用于显示用户的正常输入读书。 我曾尝试将 setRoomID 和 getRoomID 放入子类中,它有效,但我认为如果我将所有 getter 和 setter 放入子类中,继承将毫无意义。 下面是我的超类:
public class Room {
private String roomID;
private String roomTypeID;
private Integer floor;
private String roomStatus;
//Setter
public void setRoomID(String roomID) {
this.roomID = roomID;
}
public void setRoomType(String roomTypeID) {
this.roomTypeID = roomTypeID;
}
public void setFloor(Integer floor) {
this.floor = floor;
}
public void setRoomStatus(String roomStatus) {
this.roomStatus = roomStatus;
}
//Getter
public String getRoomID() {
return this.roomID;
}
public String getRoomType() {
return this.roomTypeID;
}
public Integer getFloor() {
return this.floor;
}
public String getRoomStatus() {
return this.roomStatus;
}
public String toString() {
return roomID + " " + roomTypeID + " " + floor + " " + roomStatus;
}
}
下面是我的子类:
public class RoomFrontEnd extends Room {
private String roomID;
private String roomType;
private Integer floor;
private String roomStatus;
public void setRoomTypeID(Integer roomTypeID) {
if (roomTypeID.equals("RT1")) {
this.roomType = "Single Room";
} else if (roomTypeID.equals("RT2")) {
this.roomType = "Double Room";
}
}
@Override
public String getRoomTypeID() {
return this.roomType;
}
public void setRoomStatus(String roomStatus) {
if (roomStatus.equals("1")) {
this.roomStatus = "Available";
} else if (roomStatus.equals("0")) {
this.roomStatus = "Not Available";
}
}
@Override
public String getRoomStatus() {
return this.roomStatus;
}
@Override
public String toString() {
return roomID + " " + roomType + " Floor " + floor + " " + roomStatus;
}
}
在我的测试驱动程序下方:
public class Test3 {
public static void main(String[] args) {
Room[] room = new Room[72];
RoomFrontEnd[] roomView = new RoomFrontEnd[72];
Integer i = 0;
try {
File RoomTxt = new File("Room.txt");
Scanner read = new Scanner(RoomTxt);
while (read.hasNextLine()) {
room[i] = new Room();
room[i].setRoomID(read.next());
room[i].setRoomTypeID(read.next());
room[i].setFloor(read.nextInt());
room[i].setRoomStatus(read.next());
i++;
}
read.close();
} catch (FileNotFoundException e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
for (i = 0; i < 72; i++) {
roomView[i] = new RoomFrontEnd();
roomView[i].setRoomID(room[i].getRoomID());
roomView[i].setRoomTypeID(room[i].getRoomTypeID());
roomView[i].setFloor(room[i].getFloor());
roomView[i].setRoomStatus(room[i].getRoomStatus());
}
for (i = 0; i < 72; i++) {
System.out.println(roomView[i].toString());
}
}
}
我在运行测试驱动时得到的输出:
null null Floor null Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Not Available
null null Floor null Not Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
null null Floor null Available
【问题讨论】:
-
我忘记发布文本文件了,这里是:RS11 RT1 1 1 RD12 RT2 1 0 RS13 RT1 1 0 RD14 RT2 1 1 RS15 RT1 1 1 RD16 RT2 1 0 RS17 RT1 1 1 RD18 RT2 1 1 RS19 RT1 1 0 RS21 RT1 2 1 RD22 RT2 2 0 RS23 RT1 2 1 RD24 RT2 2 1 RS25 RT1 2 1 RD26 RT2 2 0 RS27 RT1 2 1 RD28 RT2 2 0 RS29 RT1 2 0 RS31 RT1 3 0 RD32 RT2 3 0 RS33 RT1 3 0 RD34 RT2 3 0 RS35 RT1 3 0 RD36 RT2 3 0 RS37 RT1 3 1 RD38 RT2 3 1 RS39 RT1 3 1 RS41 RT1 4 1 RD42 RT2 4 0
标签: java inheritance polymorphism