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”文件。