JAVA 一例

来源:百度知道 编辑:UC知道 时间:2024/06/29 00:57:03
public Object findLargest(Object object1, Object object2) {
Relatable obj1 = (Relatable)object1;
Relatable obj2 = (Relatable)object2;
if ( (obj1).isLargerThan(obj2) > 0)
return object1;
else
return object2;
}

By casting object1 to a Relatable type, it can invoke the isLargerThan method.
Relatable 是接口
问题1:返回值为Object类型,这个类型是什么类型?
问题2:为什么要将object1强行转换为接口类型?
多谢大家帮忙啦!!!

Object是所有类型的原型,一切类都继承于它;
这样你才能做下面的处理,就像数字和文本类型不能做数学运算一样,要类型转换后才可以。

java里面一切的类都默认继承object类 也就是说object类是一切子类的父类

Relatable obj1 = (Relatable)object1;
你声明变量是Relatable类型 object1是Object类型的 这里是向下转换 所以必须进行强制转换

Object是所以对象的父类,所以一切对象皆继承于他

将它强行转换是因为你要实例化的是一个Relatable的对象,然而你的是Object,所以就得强行转换过来,这样才能用这个对象

问题1:参数为Object类型,这样能保证所有能传入的类型都能被正确返回,Object是java中所有类的基类,可以这样理解:任何类型都可以看成是Object类
问题2:因为Object类中没有isLargerTan()函数,但Relatable中有这个函数,所以只有转换成这个类型才能用这个函数