私はRobot.javaというクラスがあります。スーパークラスからコンストラクタを継承していますか?
class Robot {
String name;
int numLegs;
float powerLevel;
Robot(String productName) {
name = productName;
numLegs = 2;
powerLevel = 2.0f;
}
void talk(String phrase) {
if (powerLevel >= 1.0f) {
System.out.println(name + " says " + phrase);
powerLevel -= 1.0f;
}
else {
System.out.println(name + " is too weak to talk.");
}
}
void charge(float amount) {
System.out.println(name + " charges.");
powerLevel += amount;
}
}
とTranslationRobot.javaと呼ばれるサブクラス:
public class TranslationRobot extends Robot {
// class has everything that Robot has implicitly
String substitute; // and more features
TranslationRobot(String substitute) {
this.substitute = substitute;
}
void translate(String phrase) {
this.talk(phrase.replaceAll("a", substitute));
}
@Override
void charge(float amount) { //overriding
System.out.println(name + " charges double.");
powerLevel = powerLevel + 2 * amount;
}
}
私はTranslationRobot.javaをコンパイルすると、私は次のエラーを取得する:
TranslationRobot.java:5: error: constructor Robot in class Robot cannot be applied to given types;
TranslationRobot(String substitute) {
^
required: String
found: no arguments
reason: actual and formal argument lists differ in length
を
これは、スーパークラスから継承することについて言及していることを理解していますが、問題の内容を実際に理解していません。
コンストラクタは継承されません。 – Kayaman