[英]overload subclass constructor java
是否可以重载子类的构造函数,因为我一直在绞尽脑汁,但我真的不知道。 下面是到目前为止的全部代码和问题。
这是学校的工作,但由于我们在几周内进行概念考试而未给其评分,因此我正在尝试通过尽可能多的练习。
练习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;
}
}
您需要为ComputerLab
类添加一个构造函数,以将capacity
设置为20:
public ComputerLab(String roomNumber) {
super(roomNumber, 20, false); // is false the correct default value?
this.os = null; // what is the correct default value?
}
super
在这里调用超类构造函数(在本例中为Room
),以便将所需的参数传递给它。 在这种情况下,您的ComputerLab
实例是一个Room
,房间号为roomNumber
(新ComputerLab
构造函数的参数),容量设置为20
,投影设置为false
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.