我正在尝试从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";
}
}
最后一个问题法
公共字符串getCarsByColor(字符串CarColor)
{
for (int num = 0; num < carsParked.length; num++)
{
if ( carColour.equals(carsParked[num]) )
{
System.out.print (carsParked[num]);
}
}
return carColour;
}
到目前为止,我已经有了这个,所以如果在参数中加入“red”,它将列出所有红色的汽车和相应的信息,但似乎不起作用~_~。
你好像搞错了关系:停车场不是汽车。我建议不要在这两个类之间使用任何一个方向的继承。而carpark
可能只有一个数组或汽车集合。
还要注意,参数carsin
并不是必需的--只需获取cars数组的lengty
(如果是集合
)(或者size()
)。
编辑:好的,忽略继承部分,在调用drivein
时添加cars,在调用driveout
时删除cars似乎是有意义的。
drivein
可能应该将car
作为参数,这样该方法就可以访问您想要存储的参数(就我个人而言,我只会存储car
引用,但没有问题)。由于我们将添加和删除这些参数,因此使用能够调整自身大小的list
而不是像arraylist
这样的数组将会容易得多。例如:
private final List<String> carsRegNosParked = new ArrayList<String>();
public void driveIn(Car car) {
carsRegNosParked.add(car.getRegNo());
}
driveout
应该做什么还不太清楚。可能需要一个特定的注册号才能删除:
public void driveOut(String regNo) {
carsRegNosParked.remove(regNo);
}
或者它可以不分青红皂白地移走一辆车,比如第一辆车补充道:
public void driveOut() {
if (!carsRegNosParked.isEmpty()) {
carsRegNosParked.remove(0);
}
}
请注意remove(Object)
和remove(int)
之间的区别。
首先将carsparked
更改为列表。所以:
private String[] carsParked;
变成
private List<String> carsParked;
然后在构造函数中通过执行以下操作将其初始化为空列表:carsParked=new ArrayList();
然后在drive in方法中,使它接受一个car参数,并拉出所需的参数:
public void driveIn(Car car) {
carsParked.add(car.getRegNo());
}
同样,你也不需要通过这种方式来跟踪汽车的数量。因为您总是可以通过carsparked.size()
来找到答案。
null
编辑:当然可以用一个简单的数组来完成。这其中的问题是规模。假设您最初创建了一个大小为5的数组,当您去添加6项时,您将需要创建一个新的更大的数组,复制原始数据,然后添加新项。只是更多的工作。现在,如果你有一个停车场,它可以有X个点,那么你从一开始就将数组初始化为这个大小。
public Carpark (String locations, int room){
location = locations;
capacity = room;
//this creates an array with the max number of spots
carsParked = new String[capacity];
//also good idea to init
carsIn = 0; //initial number of cars parked
}
则在drivein()
方法中:
public void driveIn(Car car) {
carsParked[carsIn] =car.getRegNo();
carsIn=carsIn+1;
}
现在driveout()
public void driveOut(Car car) {
//loop through the array until we find the car
for (int i=0; i < carsParked.length; i=i+1){
if (car.getRegNo().equals(carsParked[i])){
//we found the car, so set the space null
carsParked[i] = null;
carsIn=carsIn-1;
//stop looping now
break;
}
}
}
看起来不错吧。不,它不是。现在drivein
将不起作用,因为我们的空点遍布各地。我们如何修复它:
public void driveIn(Car car) {
//loop through the array until we find a null spot,
//then park the car
for (int i=0; i < carsParked.length; i=i+1){
if (carsParked[i] == null){
//we found the car, so set the space null
carsParked[i] = car.getRegNo();
carsIn=carsIn+1;
//stop looping now
break;
}
}
}
还可以进一步改进。我可能仍然会将string[]carsparked
更改为car[]carsparked
以避免丢弃信息。我还将drivein
和driveout
方法更改为返回布尔值,以指示是否已成功停车或未停车。
最后编辑:好的,如果你想要跟踪什么车停在停车场,他们在哪个位置,你需要对每一辆车有足够的了解,使它独特。在您的情况下,您可能只需要regno
。因此,当您调用drivein
或driveout
时,您必须传递该信息,以便将其存储在数组中的适当索引(停车点)。否则你只会知道一辆车停在某个地方,或者一辆车离开了。而不是开放的位置。
因此简而言之,这两种方法中的参数car car
包含唯一标识正在停放或离开的每辆汽车所需的信息。没有它,car park实例将不知道当前谁在停车,或者他们在哪里停车。
问题内容: 我该如何继承其父代的样式和javascript。 我努力了 但是,它会删除标签。此外,我看不到影响iframe的样式。 我是否有更好/其他的方法来解决这个问题?谢谢。 问题答案: 您可以通过在iframe中使用以下代码来“继承”父级的CSS: 在IE,Chrome和Firefox中对我来说效果很好。 关于JavaScript,我找不到直接将父JavaScript添加到iframe中的方
问题内容: 我有及其继承的类。如何从课程中获取属性? 举例来说,让这些和对象: 我想做一些事情,例如: 并得到。我怎样才能做到这一点? 问题答案: 你不能。 实例仅继承父类的方法和属性,而不继承 实例 属性。您不应混淆两者。 是 实例的实例 属性。本实例将有他们 自己 的副本属性。 通常,您将对构造函数进行编码以采用两个参数: 另一种方法是保留对实例的引用: 从那里不再继承。像这样使用它:
我试图理解从根pom文件到中级pom文件的继承指令。说明书上写着: 定义父pom文件继承和groupid、artifactid(但不是版本),从中间级父级到根pom文件。
我试图弄清楚Java中的继承和数组,并试图让这些类一起工作。我相信我已经继承下来了,但我仍在为数组部分而挣扎。 有三个文件: 1. Person.java-基类2. Student.java-派生的Person.java3. Family.java-不太确定,我认为这是它自己的基类 人java有两个实例变量,String name和int age,以及各种各样的构造函数toString、equal
继承一个可以实现的普通超类有什么不同吗? atm我有一个名为的抽象类,我有/扩展这个。 abstractcar中的一个字段设置为"私有int容量" 但是在子类“小型汽车”中,当我输入“容量”作为构造函数中使用的变量时,它说“容量在抽象汽车中有私有访问” 我想: > 子类继承超类的所有字段和方法? 我现在该怎么进行?
null 但是当我在一个项目中看到有效的POM时,我发现它还继承了、(这是一个问题,这应该是包含它的POM的描述,而不是它的子级。所有子级都有一个类似“所有POM的根”的描述有什么意义) 那么,是否存在一个实际的列表,或者它只是从父POM继承所有内容?我在工件的清单中使用了其中的一些属性,因此我想添加有意义的值