在哪种情况下应该使用Java中的引用变量?

时间:2016-12-13 06:06:47

标签: java method-overriding

我理解在Java中,超类的引用变量可以引用其子类的对象的概念。但我真的不明白为什么它在以下或任何其他情况下很重要:

class Figure {
    double dim1 , dim2;
    Figure(double a, double b){
        dim1 = a;
        dim2 = b;
    }
    double area(){
        System.out.println("Area undefined");
        return 0;
    }
}

class Rectangle extends Figure{
    Rectangle(int a, int b){
        super(a,b);
    }
    double area(){
        System.out.println("Area of rectangle:");
        return dim1*dim2;
    }
}

class Triangle extends Figure{
    Triangle(int a, int b){
        super(a,b);
    }
    double area(){
        System.out.println("Area of triangle:");
        return dim1*dim2/2; 
    }
}

class CalArea{
    public static void main(String args[]){
        Figure fig = new Figure(10,10);
        Rectangle rect = new Rectangle(20,10);
        Triangle tri = new Triangle(10,15);

        Figure figref;      //Figure class reference
        figref = fig;
        System.out.println(figref.area());

        figref = rect;
        System.out.println(figref.area());

        figref = tri;
        System.out.println(figref.area());
    }
}

此处不是将超类的变量 figref 引用到其子类矩形三角形的每个对象,我可以用它们各自的对象调用每个类的 area()方法。 重要的是我们可以实施动态方法调度 ??

请提供一个更真实的例子,以便了解它的重要性以及应该应用的地方。

0 个答案:

没有答案