是否有可能重载子类的构造函数,因为我一直在绞尽脑汁,我真的想不通。以下是到目前为止我的全部代码和问题。
这是学校作业,但没有评分,因为我们将在几周后进行概念考试,所以我正在努力完成尽可能多的练习。
练习 4 - 重载构造函数:
我们注意到大多数计算机实验室的容量为 20。
为只有一个参数的 ComputerLab 类编写一个新的构造函数,房间号,并将容量初始化为 20。我们现在将重载 ComputerLab 类的构造函数,以便有两种方法来创建该类的实例。
Week7.java:
package week7;
public class Week7 {
/*
* @param args the command line arguments
*/
public static void main(String[] args) {
Room nonTech = new Room("t12", 25, true);
System.out.println("nonTech");
System.out.println(nonTech.getRoomNumber());
System.out.println(nonTech.getCapacity());
System.out.println(nonTech.hasProjector());
ComputerLab tech = new ComputerLab("r12", 10, true, "win7");
System.out.println();
System.out.println("tech");
System.out.println(tech.getRoomNumber());
System.out.println(tech.getCapacity());
System.out.println(tech.hasProjector());
System.out.println(tech.getOS());
// hasProjector == false however it will also return true due
//to the override method lower down
LectureRoom mainhall = new LectureRoom("somthing", 100, false);
System.out.println();
System.out.println("mainhall");
System.out.println(tech.hasProjector());
}
}
class Room {
String roomNumber;
int capacity;
boolean projection;
public Room(String rm, int n, boolean p) {
roomNumber = rm;
capacity = n;
projection = p;
}
public String getRoomNumber() {
return roomNumber;
}
public int getCapacity() {
return capacity;
}
public boolean hasProjector() {
return projection;
}
}
class ComputerLab extends Room {
// RoomNumber, capacity, projection inherited
private String os;
public ComputerLab(String rm, int n, boolean p, String os) {
super(rm, n, p);
this.os = os;
}
public String getOS() {
return os;
}
public void setOS(String update) {
os = update;
}
}
class LectureRoom extends Room {
// RoomNumber, capacity, projection inherited
public LectureRoom(String rm, int n, boolean p) {
super(rm, n, p);
}
// Overrides Superclass hasProjector
public boolean hasProjector() {
return true;
}
}