我正在学习 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)”。
我该怎么做?