2

我正在学习 oracle 教程,并且从这里开始对使用“接口作为类型”一章有一些疑问,因此我尝试了解如何调用方法 findLargest

我试图修改一些源代码以获得更好的理解,但没有任何帮助:(

这是我的代码:

public class RectanglePlus implements Relatable {

    public int width = 0;
    public int height = 0;

    public RectanglePlus() {
    }

    public RectanglePlus(int w, int h) {
        width = w;
        height = h;
    }

    // a method for computing the area of the rectangle
    public int getArea() {
        return width * height;
    }

    // a method required to implement the Relatable interface

    public int isLargerThan(Relatable other) {
        RectanglePlus otherRect = (RectanglePlus) other;
        if (this.getArea() < otherRect.getArea()) {
            return -1;
        } else if (this.getArea() > otherRect.getArea()) {
            return 1;
        } else {
            return 0;
        }
    }

    // and here is the method that i cant invoke
    public RectanglePlus findLargest(RectanglePlus object1,
            RectanglePlus object2) {
        Relatable obj1 = (Relatable) object1;
        Relatable obj2 = (Relatable) object2;
        if ((obj1).isLargerThan(obj2) > 0) {
            return object1;
        } else {
            return object2;
        }
    }

    public static void main(String[] args) {
        RectanglePlus test1 = new RectanglePlus(10, 20);
        RectanglePlus test2 = new RectanglePlus(20, 20);
    }
}

那么,如何调用 findLarge 方法来比较 test1 和 test 2?(我知道找到最大的对象是没有意义的,因为我是从方法isLargerThan知道的,但我只是试着理解一个原理)

它不是静态方法,所以我不能只说“RectanglePlus.findLarger(test1, test2)”。

我该怎么做?

4

1 回答 1

2

因为findLargestis not static,所以可以使用 anyRectanglePlus来调用函数:

test1.findLargest(test1,test2);

或者

test2.findLargest(test1,test2);
于 2012-08-03T14:28:21.057 回答