如何从Java中调用父方法?

时间:2012-12-26 21:01:44

标签: java

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方法。我还尝试使用thissuper。有什么问题?

6 个答案:

答案 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。是一个非常有用和易于使用的工具。

希望这有帮助!