考试样本,好奇,如果我做对了

时间:2011-12-19 04:27:32

标签: java

问题是:

假设oObject类型的引用,它指向包含A方法和f方法的类型toString对象。 toStringf都没有参数。显示调用toString方法的语句和调用f方法的语句。

是答案:

 f();
 toString();

2 个答案:

答案 0 :(得分:12)

不,那不对。首先,您没有使用实例o来调用方法。如果不指定实例,编译器将导致在this上隐式调用这些方法。

其次,您无法调用o.f(),因为f不是Object的方法。需要使用显式强制转换来告诉编译器o类型为A

Object o = new A();
String s = o.toString();
((A)o).f();

另见

答案 1 :(得分:1)

取决于您调用该函数的范围。如果您在f类的实例方法中调用toStringA,那么您是正确的。

如果您在f类的静态方法或其他类的任何方法中调用toStringA,则需要实例化新的A对象,然后调用它上面的函数,如下所示:

A myA = new A();  // Assuming the existence of a no-args constructor
myA.f();
myA.toString();

如果您的引用严格属于Object类型,则无法调用f,除非您先将其强制转换为A类型。