如何访问Java中的子子类?

时间:2014-10-05 16:13:42

标签: java methods subclass

这是我的代码总结:

Vehicle.java:

public class Vehicle {

    private String enrollment;

    public Vehicle (String enrollment){
        this.enrollment = enrollment;
    }
}

Truck.java:

public class Truck extends Vehicle {

    private double pma;

    public Truck (String enrollment){
       super(enrollment);
    }

    public void setPma(double pma) {
       this.pma = pma;
    }
}

Main.java:

Vehicle[] arrayVehicle = new Vehicle[1];
arrayVehicle[0] = new Truck("AAA333");
arrayVehicle[0].setPma............

我无法访问setPma方法。 pma是轨道的ONLY属性,因此它不能在Vehicle类中。那么,无论如何都可以根据需要访问该方法,或者我的类结构是错误的吗?

P.S。:我不想把所有的代码都放在一起,因为这是我参加课程的练习。询问你对代码或目的不了解的任何事情。

3 个答案:

答案 0 :(得分:0)

arrayVehicle[0]Vehicle类型的变量。因此,即使它引用类型Truck的对象,编译器也不知道。编译器唯一知道的是arrayVehicle[0]Vehicle。因此,它不允许您访问Vehicle类中未定义的方法。

要访问Truck中定义的方法,您需要一个Truck类型的变量:

Vehicle[] arrayVehicle = new Vehicle[1];
Truck truck = new Truck("AAA333");
arrayVehicle[0] = truck;
truck.setPma(...);

答案 1 :(得分:0)

您应该将Vehicle对象强制转换为子类卡车以访问子类方法。你可以使用反射,这也应该有效。

答案 2 :(得分:-1)

你应该把setPMA放在车辆类中。

public class Vehicle {

    private String enrollment;

    public Vehicle (String enrollment){
        this.enrollment = enrollment;
    }

    private void setPMA(double pma)
    {
        this.pma = pma;
    }

这样做,您可以访问任何子类中的setPMA。