错误:
java:com.company.Bicycle 不是抽象的,不会覆盖 com.company.Vehicle 中的抽象方法 applyBreakes(int(,对于 Bike 类也是如此。
package com.company;
interface Vehicle {
//all are the abstract method.
void changeGear(int a);
void speedUp(int a);
void applyBreakes(int a);
}
class Bicycle implements Vehicle {
int speed;
int gear;
//to change speed
@Override
public void changeGear(int newGear) {
gear = newGear;
}
//to increase speed
@Override
public void speedUp(int increment) {
speed = speed + increment;
}
//to decrease speed
public void applyBreaks(int decrement) {
speed = speed - decrement;
}
public void printStates() {
System.out.println("speed: " + speed + " gear: " + gear);
}
}
class Bike implements Vehicle {
int speed;
int gear;
//to change gear
@Override
public void changeGear(int newGear) {
gear = newGear;
}
//to increase speed
@Override
public void speedUp(int increment) {
speed = speed + increment;
}
//to decrease speed
public void applyBreaks(int decrement) {
speed = speed - decrement;
}
public void printStates() {
System.out.println("speed: " + speed + " gear: " + gear);
}
}
class GFG {
public static void main(String[] args) {
//creating an instance of Bicycle
//doing some operations
Bicycle bicycle = new Bicycle();
bicycle.changeGear(2);
bicycle.speedUp(3);
bicycle.applyBreaks(1);
System.out.println("Bike present state :");
bicycle.printStates();
//creating instance of bike.
Bike bike = new Bike();
bike.changeGear(1);
bike.speedUp(4);
bike.applyBreaks(3);
System.out.println("Bike present state :");
bike.printStates();
}
}
因为您在接口(和/或实现(中拼错了方法名称。
接口方法名是applyBreakes
,而实现称之为applyBreaks
。 因此,类不实现接口方法,而是定义新的(不相关的(方法。
附言正确的拼写(英文(是"applyBrakes"。
"java:com.company.Bicycle 不是抽象的,不会覆盖 抽象方法在com.company.vehicle中applyBreakes(int(和相同的 自行车类。
意味着 Bicycle 类具有许多方法,但没有足够的方法成为完全定义的类。
在这种情况下,缺少的方法就是Vehicle
说必须实现的方法,即applyBreaks(int)
方法。
在接口中实现的方法applyBreakes()
,但您在具体类中实现applyBreaks()
。
这似乎是一个拼写错误。
幸运的是,如果您使用@Override
注释所有覆盖/实现方法,则可以尽早保护您免受此类编译错误的影响。
例如,您做到了:
@Override
public void speedUp(int increment) {
speed = speed + increment;
}
但是你没有这样做:
public void applyBreaks(int decrement) {
speed = speed - decrement;
}
用@Override
注释它,编译错误消息会更明确:
@Override
public void applyBreaks(int decrement) {
speed = speed - decrement;
}