Java 类继承

Java 类继承,java,inheritance,Java,Inheritance,我有以下代码,可以工作: public class Bicycle { int cadence = 0; int speed = 0; int gear = 1; void changeCadence(int newValue){ cadence = newValue; } void changeGear(int newValue){ gear = newValue; } void speed

我有以下代码,可以工作:

public class Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;

    void changeCadence(int newValue){
        cadence = newValue;
    }

    void changeGear(int newValue){
        gear = newValue;
    }

    void speedUp(int increment){
        speed = speed + increment;
    }

    void applyBrakes(int decrement){
        speed = speed - decrement;
    }

    void printStates(){
        System.out.println("cadence: " + cadence + "; speed: " + speed + "; gear: " + gear);
    }

    public static void main(String[] args) {

        // Create two different 'Bicycle' objects:
        Bicycle bike1 = new Bicycle();
        Bicycle bike2 = new Bicycle();

        // Invoke methods on the two new objects:
        bike1.changeCadence(50);
        bike1.speedUp(10);
        bike1.changeGear(2);
        bike1.printStates();

        bike2.changeCadence(45);
        bike2.speedUp(15);
        bike2.changeGear(2);
        bike2.changeCadence(40);
        bike2.speedUp(10);
        bike2.changeGear(3);
        bike2.printStates();
    }

}
然后我想要一个名为“MountainBike”的新类继承自“Bicycle”类,我编写了以下新代码:

package mountainbike;

public class MountainBike extends Bicycle {

    public static void main(String[] args) {
        // TODO code application logic here
    }

}
但是在这里,我在
公共类MountainBike extends Bicycle{
行上得到一个错误指示,表示
找不到符号类Bicycle


我想我必须把一个“导入”放在某个地方,但我到底应该导入什么呢?

把自行车类和山地自行车类放在同一个包中,也许是山地自行车包。 或者在定义MountainBike类的文件上导入Bike类的包

package mountainbike;
import bicycle.*; //or import bicycle.Bicycle;

public class MountainBike extends Bicycle {

    public static void main(String[] args) {
        // TODO code application logic here
    }

}

同时检查文件夹结构。Bicycle类应位于Bicycle文件夹中,该文件夹对应于Bicycle包,MountainBike类应位于MountainBike文件夹中,该文件夹对应于MountainBike包。您的项目结构应类似。

是您的MountainBike和
Bicycle
包>同样的? 如果未导入
MountainBike
类中的
自行车

import <bicycle-package>.Bicycle;
import.Bicycle;

如果您的
MountainBike
类位于软件包
MountainBike
中,并且您的
Bike
类不在此
MountainBike
软件包中,则可能会出现此错误。一种解决方案是导入
Bicycle
所在的软件包。您可以像这样键入导入

import com.example.bicycle.Bicycle;

但通常使用包来分隔不相关的类,并将相关的类放在一起。我觉得您正在处理的类相关程度足够高,可以放在同一个包中。如果两者都在同一个包中,您的代码将不需要任何额外的导入。

导入包含Bicycle类的包,将其添加到您的MauntainBike中代码:-

package mountainbike;

import packageName.Bicycle;

public class MountainBike extends Bicycle {

    public static void main(String[] args) {
        // TODO code application logic here
    }

}
或者,如果自行车类没有包(默认包),请将自行车添加到与MountainBike相同的包中

package mountainbike;

public class Bicycle {
.
.
.
}

现在自行车在同一个软件包中,因此MountainBike类可见。

将自行车移动到某个软件包aka子目录。默认软件包()不适用于此类用途(是的)

package mountainbike;
import bicycle.*; //or import bicycle.Bicycle;

public class MountainBike extends Bicycle {

    public static void main(String[] args) {
        // TODO code application logic here
    }

}
尤其是不能做到:

import Bicycle; // NO CAN DO - Default package import.

能够使用完全限定的名称
mountainbike。mountainbike
但不能使用
Bicycle
是一种确保使用包来构造类的措施。

当刹车时,您的自行车可以向后加速导入存在自行车类的包。如果您使用eclipse,请按CTRL+SHIFT+O你用过IDE吗?Intellij/Eclipse/Netbeans?我用的是Netbeans。你说的“将自行车移动到某个包aka子目录”是什么意思?我的“自行车”类在文件“Bicycle.java”和(默认)包“bicyle”中,而我的“MountainBike”类在文件“MountainBike.java”和(默认)包中包“mountainbike”。这样可以吗?好的,但是我如何将“Bicycle”类的包导入到定义“mountainbike”类的文件中?包含“Bicycle”类的包的名称是什么?如果没有,最好将Bicycle类也放在一个包中。不过,最好将两个类都放在同一个包中。我的“Bicycle”类位于文件“Bicycle.java”中,带有(默认)包“bicyle”,而我的“MountainBike”类位于文件“MountainBike.java”中,带有(默认)包包“mountainbike”。但它不起作用,甚至没有编写“import bicycle.*;”。如何将这两个类放在同一个包中?您的项目文件夹结构是什么?我使用的是NetBeans。我有一个名为“bicycle”的项目,其中有我的“bicycle.java”文件,还有一个名为“mountainbike”的项目,其中有我的“mountainbike.java”文件。