从父类获取参数的Java继承
我试图从Car的父类中获取一个参数,并将其添加到我的数组(carsParked
),我如何才能做到这一点
父类
public class Car
{
protected String regNo; //Car registration number
protected String owner; //Name of the owner
protected String carColor;
/** Creates a Car object
* @param rNo - registration number
* @param own - name of the owner
**/
public Car (String rNo, String own, String carColour)
{
regNo = rNo;
owner = own;
carColor = carColour;
}
/** @return The car registration number
**/
public String getRegNo()
{
return regNo;
}
/** @return A String representation of the car details
**/
public String getAsString()
{
return "Car: " + regNo + "\nColor: " + carColor;
}
public String getColor()
{
return carColor;
}
}
儿童班
public class Carpark extends Car
{
private String location; // Location of the Car Park
private int capacity; // Capacity of the Car Park - how many cars it can hold
private int carsIn; // Number of cars currently in the Car Park
private String[] carsParked;
/** Constructor for Carparks
* @param loc - the Location of the Carpark
* @param cap - the Capacity of the Carpark
*/
public Carpark (String locations, int room)
{
location = locations;
capacity = room;
}
/** Records entry of a car into the car park */
public void driveIn()
{
carsIn = carsIn + 1;
}
/** Records the departure of a car from the car park */
public void driveOut()
{
carsIn = carsIn - 1;
}
/** Returns a String representation of information about the carpark */
public String getAsString()
{
return location + "\nCapacity: " + capacity +
" Currently parked: " + carsIn +
"\n*************************\n";
}
}
最后一题法
public String getCarsByColor (String carColour)
{
for (int num = 0; num < carsParked.length; num++) { if ( carColour.equals(carsParked[num]) ) { System.out.print (carsParked[num]);
}
}
return carColour;
}
到目前为止,如果在参数中输入“red”,它将列出所有红色车辆及其相应信息,但似乎不起作用
# 1 楼答案
你在这里似乎有错误的关系:停车场不是汽车。我建议不要在这些类之间使用任何方向的继承。而且
Carpark
应该只是拥有一系列汽车还要注意的是,参数
carsIn
不是必需的——只需获取cars数组的length
(或者size()
,如果它是Collection
)编辑:好的,忽略继承部分,似乎在调用
driveIn
时添加汽车,在调用driveOut
时删除汽车是有意义的driveIn
可能应该将Car
作为参数,这样该方法就可以访问您想要存储的参数(我个人只想存储Car
引用,但没问题)。因为我们要添加和删除这些参数,所以使用能够调整自身大小的List
而不是像^{不太清楚
driveOut
应该做什么。可能需要特定的注册号才能删除:或者它可以不加区别地移除一辆车,第一辆车补充说:
注意^{} 和^{} 之间的区别
# 2 楼答案
首先将
carsParked
更改为列表。所以:变成
然后在构造函数中,通过执行以下操作将其初始化为空列表: carbleed=new ArrayList()
然后,在“免下车”方法中,将其设置为一个car参数,并拉取所需的参数:
而且你不需要用这种方式记录汽车的数量。因为你总是可以做
carsParked.size()
来找到答案。现在我可能会把这个列表改成
List<Car>
而不是字符串,然后把整辆车都扔进去。当然,你现在可能只需要一件物品,但谁知道接下来,你可能还需要别的东西。编辑: 当然你可以用一个简单的数组。问题在于尺寸。假设您最初创建了一个大小为5的数组,当您要添加6项时,您需要创建一个新的更大的数组,复制原始数据,然后添加新项。只是更多的工作。现在,如果你有一个停车场,它可以有X个点,那么你从一开始就初始化你的阵列到这个大小
然后在
driveIn()
方法中:现在
driveOut()
看起来不错,不是吗。不,不是。现在
driveIn
将不起作用,因为我们有零点分散在各地。我们如何修复它:它还可以进一步改进。我可能还是会把
String[] carsParked
改成Car[] carsParked
,以免丢掉信息。 我还将更改driveIn
和driveOut
方法,返回布尔值,以指示车辆是否成功停放或取消停放最终编辑: 好的,如果你想知道停车场里停着什么车,它们停在什么地方,你需要对每辆车都有足够的了解,让它独一无二。在您的情况下,您可能只需要
regNo
。因此,当您调用driveIn
或driveOut
时,您必须传递该信息,以便我们可以将其存储在数组中适当的索引(停车位)中。否则你只会知道一辆车停在某个地方,或者一辆车离开了。不知道哪些地方是开放的简言之,这两种方法中的参数
Car car
包含唯一标识正在停放或正在离开的每辆车所需的信息。如果没有它,停车场实例将不知道当前停车的是谁,或者停车的位置