超类和传递值

时间:2015-02-13 04:41:31

标签: java constructor superclass

所以我有以下代码

public class Car {
    int trunkCapacity;

    public Car (String manufacturer, int topSpeed, int trunkCapacity) {
        super();
        this.trunkCapacity = trunkCapacity;
        System.out.println("Returning from Car constructor");
    }

    public Car () {
        this("UnknownCar", 100, 1);
        System.out.println("Returning from default Car constructor");
    }

    public String toString() {
        return "This trunk capacity is" + this.trunkCapacity;
    }

}

它一直在说"构造函数Object(String,int)未定义"当我把super(制造商,topSpeed);

我需要将String值和int topSpeed传递给超类,但我不知道该怎么做。我该如何输入这个super()?

谢谢大家的帮助,你确实帮助改进了它,但我发现主要的问题是在我的另一个班级,谢谢。

2 个答案:

答案 0 :(得分:2)

你为什么称超级?

public class Car

从上面一行可以看出,你没有扩展任何类,这意味着默认情况下Car extends ObjectObject类没有Object(String, int)形式的构造函数

Object只有一个

形式的构造函数

public Object ()

Super()用于调用超类的构造函数。您可以在here

中了解构造函数链接

答案 1 :(得分:2)

这是你的问题:

您的类Car不会扩展任何超类,因此您无法使用参数调用超类的构造函数。

实际上,你的类扩展了默认类Object(每个类的超类),所以你的字面意思是:

public class Car extends Object {
    //...
}

但是类Object有一个默认的构造函数,因此不带任何参数。

如果您希望调用超类,并将参数传递给它,您必须创建它,并extend使用它Car类。

<强> 实施例

public class Vehicle {
    public Vehicle(String manufacturer, int topSpeed) {
        //...
    }
}
public class Car extends Vehicle {
    //...
}

要了解有关java中的类(和接口)继承的更多信息,请删除:http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html