import java.util.Random;
class VehicleConstructor{
private int startSpeed;
public VehicleConstructor() {
setSpeed();
System.out.println("VehicleConstructor");
}
private void setSpeed(){
int minSpeed = 1;
int maxSpeed = 40;
Random random = new Random();
this.startSpeed = random.nextInt(maxSpeed - minSpeed + 1) + minSpeed;
}
}
class Bicycle extends Vehicle{
public Bicycle(){
System.out.println(getSpeed());
}
}
public class Vehicle{
public static void main(String[] args){
Bicycle bicycle = new Bicycle();
}
}
问题发生在Bicycle
类,我尝试从getSpeed()
类调用VehicleConstructor
方法。我还尝试使用this
和super
。有什么问题?
答案 0 :(得分:2)
您提供的代码中没有名为getSpeed
的方法 - 只有setSpeed
- 该方法为private
,这意味着无法从任何外部课程。
答案 1 :(得分:2)
您的Bicycle
课程目前展开Vehicle
,而不是VehicleConstructor
。扩展VehicleConstructor
,并创建getSpeed()
方法,您的问题应该得到解决。
答案 2 :(得分:0)
setSpeed()
是VehicleConstructor
的方法,而不是Vehicle
。
但是,如果它是拼写错误而getSpeed()
是Vehicle
的方法,则您仍然无法访问它,因为它被声明为private
。访问父方法所需的最小访问修饰符为protected
。
答案 3 :(得分:0)
似乎未在 VehicleConstructor 类中定义 getSpeed() !!!
答案 4 :(得分:0)
也许你想要这个:
public class Vehicle{
private int speed;
public void setSpeed(int speed){
this.speed=speed;
}
public int getSpeed() {
return speed;
}
}
答案 5 :(得分:0)
我想你想要更多这样的东西:
class Vehicle{
private int startSpeed;
public Vehicle() {
setSpeed();
System.out.println("Vehicle");
}
private void setSpeed(){
int minSpeed = 1;
int maxSpeed = 40;
Random random = new Random();
this.startSpeed = random.nextInt(maxSpeed - minSpeed + 1) + minSpeed;
}
public int getSpeed(){
return startSpeed;
}
}
public class bicycle extends Vehicle{
public Bicycle(){
System.out.println(super.getSpeed());
}
}
public class VehicleCostructor{
public static void main(String[] args){
Bicycle bicycle = new Bicycle();
}
}
假设您的VehicleConstructor应该仅仅是对您的课程的测试。
更好的测试方法可能是使用JUnit。是一个非常有用和易于使用的工具。
希望这有帮助!