奥什科什的住宿可分为三种类型 - 酒店(以房间数量和星级评定为主),旅馆(以房间数量为模型以及是否提供自行车租赁服务)和住宿加早餐(模仿)根据房间数量以及是否允许延迟抵达)。每间客房每晚的价格总是固定的,酒店,旅馆和住宿加早餐的价格分别为40美元,20美元和55美元。模拟这种情况的继承层次结构的骨架代码如下所示。完成所有缺失的部分,以便代码编译,模拟继承层次结构,并具有上述所有功能。您应该确定存储适当数据成员的类以及这些数据成员的类型。在每个班级中,完成构造函数并提供一个方法computeRate,该方法将所花费的夜数作为参数,并返回该住宿的总房价。不应提供其他方法。
有人可以给我一些天气提示,你认为我会以正确的方式解决这个问题。我遇到的主要问题是computeRate方法。我不知道如何设置酒店,住宿加早餐和旅馆的住宿价格。我尝试使用超级,但我不完全确定这是不是我应该做的。
//父类
public class Lodging
{
int sum;
int price;
public Lodging( int price ) {
this.price = price;
}
}
public double computeRate(int numberOfNights){
price *= numberOfNights;
return sum;
}
// child class
public class Hostel extends Lodging
{
private int numberOfRooms;
private boolean bikeRentals;
public Hostel( int rooms, boolean rentals) {
super(20);
this.numberOfRooms = rooms;
this.bikeRentals = rentals;
}
}
// child class
public class Hotel extends Lodging
{
private int rooms;
private int starRating;
public Hotel( int rooms, int starRating ) {
super(40);
this.rooms = rooms;
this.starRating = starRating;
}
}
// child class
public class BednBreakfast extends Lodging
{
private int numberOfRooms;
private boolean lateArrivals;
public BednBreakfast( int rooms, boolean late ){
super(55);
this.numberOfRooms = rooms;
this.late = late;
这是给定的骨架代码
class Lodging
{
public Lodging( )
{
}
}//End class Lodging
class Hotel
{
public Hotel( )
{
}
}//End class Hotel
class Hostel
{
public Hostel( )
{
}
}//End class Hostel
class BednBreakfast
{
public BednBreakfast ( )
{
}
}//End class BednBreakfast
答案 0 :(得分:1)
您的每个类都有空间,因此我将其移至父类,并将其添加到构造函数中。
此外,Lodging
是一个抽象概念,因此您无法创建new Lodging()
,您需要一个特定的实例。
public abstract class Lodging {
private double nightlyRate;
private int capacity;
public Lodging( int capacity, double rate ) {
nightlyRate = rate;
this.capacity = capacity;
}
public double computeRate(int numberOfNights){
return this.nightlyRate * numberOfNights;
}
}
然后,对于super(rooms, 20)
示例,Hostel
没有任何问题。它正确设置了父类的字段,每个子类都将继承超类的computeRate()
方法。问题描述并不表示需要覆盖它。